首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

初学者求解一个关于十进制转换二进制的有关问题。C的。

2012-12-30 
菜鸟求解一个关于十进制转换二进制的问题。C的。。题目描述给出一个十进制的非负整数x,x216,把它转换成二进

菜鸟求解一个关于十进制转换二进制的问题。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");
}
}

[解决办法]
LZ直接无视1L的回复好了

我没看到哪里有问题,能否发OJ的链接?
[解决办法]
是不是看错题目呢?
如果是 x<= 2^16的话,那么int a[16]的空间就不够了哦

热点排行