C语言问题, 将输入的十进制数值转换成8位二进制数值

不要用itoa函数, 数组, 函数调用都可以!

主要问题是是当十进制数值小于128的时候,前面要加个0, 用数组赋值,然后倒序输出总是报错, 请达人帮忙,谢谢!!
刚写的, 但是MS有很大的问题, 被无限循环了. 初学者, 请大家不吝赐教!! 谢谢!!

#include<stdio.h>

void convert(int number){
int i,a[7];
int reminder;
for(i=0;i<8;i++){
reminder=number%2;
number=number/2;
a[i]=reminder;
}
for(i=7;i>=0;i--){
printf("%d",a[i]);
}
return;
}

int main(void)
{
int input;

printf("Give a number in [0,255]:");
scanf("%d",&input);
convert(input);
printf("\n");

return 0;
}

#include <stdio.h>
void main()
{
int convert(int a);
int a,e[100],k,j=0,i=0;
printf("请输入你将要转换的数值(十进制正整数):\n");
scanf("%d",&a);
while(a!=0)
{
k=convert(a);
a/=2;
e[j]=k;
j++;
}
while(j%4!=0)
{
e[j]=0;
j++;
}
printf("转换成的二进制数是:");
for(;j>=1;j--)
printf("%d",e[j-1]);
printf("\n");
}
int convert(int a)
{
int c;
c=a%2;
return c;
}
调试通过的!追问

输入0, 然后什么都没输出!

追答

#include
void main()
{
int convert(int a);
int a,e[100],k,j=0,i=0;
printf("请输入你将要转换的数值(十进制正整数):\n");
scanf("%d",&a);
if(a==0)
printf("转换成的二进制数是:0000\n");
else
{
while(a!=0)
{
k=convert(a);
a/=2;
e[j]=k;
j++;
}
while(j%4!=0)
{
e[j]=0;
j++;
}
printf("转换成的二进制数是:");
for(;j>=1;j--)
printf("%d",e[j-1]);
printf("\n");
}
}
int convert(int a)
{
int c;
c=a%2;
return c;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-01
int bin[32];
int num = 6;

for (int i=0; i<32; i++)
{
bin[31-i] = num % 2;
num = num / 2;
}
for (int j=0; j<32; j++)
{
printf("%d",bin[j]);
}
第2个回答  2011-03-05
数组越界。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网