菜鸟求解一个关于十进制转换二进制的问题。C的。。
题目描述
给出一个十进制的非负整数x,x<=216,把它转换成二进制数输出。
输入
输入为多行,每行一个整数x,至读入EOF结束。
输出
每行输出x对应的二进制数值。
#include <stdio.h>
void main()
{
int a[16];
int i,c;
while(scanf("%d",&c)!=EOF)
{
for (i=0;i<=15;i++) a[i]=2;
for(i=0;i<=15;i++)
{
a[i]=c%2;
c=c/2;
if(c==0) break;
}
for (i=15;i>=0;i--)
if (a[i]==0||a[i]==1) printf("%d",a[i]);printf("\n");
}
}
我感觉挺好的。。。但是交到OJ上答案错误50%。。。求解。
[解决办法]
#include <stdio.h>
void main()
{
int a[16];
int i, c;
while (scanf("%d",&c) != EOF)//问题在这:scanf是返回整型的函数,EOF是文件流的结束符。牛头不对马尾,这辈子你也别想跳出这个死循环
{
for (i = 0;i <= 15;i++)
a[i] = 2;
for(i = 0;i <= 15;i++)
{
a[i] = c % 2;
c = c / 2;
if (c == 0) break;
}
for (i = 15;i >= 0;i--)
if (a[i] == 0
[解决办法]
a[i] == 1)
printf("%d", a[i]);
printf("\n");
}
}