请C语言高手帮忙做道题(急)

来源:百度知道 编辑:UC知道 时间:2024/06/09 07:23:27
设学号后4位(1072)*40后所得的数为NUM,且NUM在内存中占16位,编制一个把十进制转变为2进制的函数,在main中调用这个函数,把NUM转变为2进制并输出。
我编的是:
#include <stdio.h>
void main()
{
int trans2(unsigned short x,int n[]);
unsigned short NUM,i,n[16];
NUM=1072*40;
for(i=0;i<16;i++)
{
n[i]=NUM%2;
NUM=NUM/2;
}
trans2(NUM,n[i]);
for(i=15;i>=0;i--)
printf("%d",n[i]);
printf("\n\n");
}
int trans2(unsigned short x,int n[])
{
int i;
for(i=0;i<16;i++)
{
n[i]=x%2;
x=x/2;
}
}
但其中有严重警告,请问错在哪儿了?
非常感谢能回答此题的朋友。如你有更好的编程,也请发一下吧。谢谢!

void main()
{
void trans2(unsigned short x,unsigned short n[]);//不是int而是u short啊
unsigned short NUM,i,n[16];
NUM=1072*40;

//for(i=0;i<16;i++) --- 这些不用吧?后面有调trans2啊
//{
// n[i]=NUM%2;
// NUM=NUM/2;
//}

trans2(NUM,n);

for(i=0;i<16;i++) //不能用 i=15;i>=0;i--,当i==0后再减就是-1,在u short中-1可是65535啊,再怎么减都是>=0的
printf("%d",n[16 - i - 1]);

printf("\n\n");
}

void trans2(unsigned short x,unsigned short n[])
{
int i;
for(i=0;i<16;i++)
{
n[i]=x%2;
x=x/2;
}
}

#include <stdio.h>
void main()
{
int trans2(unsigned short x,int n[]);
unsigned short NUM,i,n[16];
NUM=1072*40;
for(i=0;i<16;i++)
{
n[i]=NUM%2;
NUM=NUM/2;
}
trans2(NUM,n[i]); //这里的第二个参数应该传入数组,而不是数组的元素
for(i=15;i>=0;i--