几个c语言的问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 03:19:17
1.从键盘上输入10个整型数,去掉重复的。将剩余的由大到小排序输出
2.编写一个函数,输入1个十进制的数,输出相应的二进制,八进制,16进制数
3.编写一个用于回答星期几的函数,函数的3个参数分别表示年,月,日,函数的输出为该年月日是星期几

1,解:源程序如下:
#include <stdio.h>
int fun(int a[], int n)
{
int i,j=0;
for(i=1;i<n;i++)
{
if(a[i]!=a[j])
{
j++;
a[j]=a[i];
}
}
return j+1;
}
main()
{ int a[10],i,n=10;
for (i=0;i<10;i++)
scanf("%d",&a[i]);
printf("The original data :\n");
for(i=0; i<n; i++)printf("%3d",a[i]);
n=fun(a,n);
printf("\n\nThe data after deleted :\n");
for(i=0;i<n;i++)printf("%3d",a[i]); printf("\n\n");
}
2,解:源程序如下:
# define M sizeof (unsigned int)*8/*函数TRANS将无符号整数N转换成D(2,8,16)进制表示的字符串S*/
int trans( unsigned n, int d, char s[])
{
static char digits[]="0123456789ABCDEF";/*16进制数字字符*/
char buf[M+1];
int j,i=M;
if (d<2||d>16)
{
s[0]='\0';/*不合理的进制,置S为空字