C语言进制转换问题,继续求解释

#include<stdio.h>int main(){ char a[1]; int b[8]; int i,k=0; for(int w=0;w<1;w++) { scanf("%c",&a[w]); } for(i=0;i<1;i++) { int j=0x80; for(;j;j>>=1) { if(j&a[i]) { b[k++]=1; } else { b[k++]=0; } } } for(int l=0;l<8;l++) { printf("%d",b[l]); } return 0;}我的目的输入一个字节的数据,比方说char,然后将它转换为一个8位的二进制存放在一个长度为8的数组中,请问这个程序有问题吗?
#include<stdio.h>
int main()
{
char a[1];
int b[8];
int i,k=0;
for(int w=0;w<1;w++)
{
scanf("%c",&a[w]);
}
for(i=0;i<1;i++)
{
int j=0x80;
for(;j;j>>=1)
{
if(j&a[i])
{
b[k++]=1;
}
else
{
b[k++]=0;
}
}
}
for(int l=0;l<8;l++)
{
printf("%d",b[l]);
}
return 0;
}

思路很好,但输入的是字符,却按整型处理了,就出错了。用char声明的就是一个字节的整型数,直接用就可以了。下面是改过的,自己对照看……
void main(void){
char a;
int b[8];
int i,k=0;
scanf("%d",&a);
int j=0x80;
for(;j;j>>=1){
if(j&a){
b[k++]=1;
}
else{
b[k++]=0;
}
}
for(int l=0;l<8;l++){
printf("%d",b[l]);
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-10
//用栈实现将一个十进制数转换成二进制
#include<stdio.h>
void conversion(int x);
void main()
{
int x;
printf("请输入要将十进制转换成二进制的数:");
scanf("%d",&x);
conversion(x);
printf("\n");

}
void conversion(int x)
{
int stack[8],y,top=0;
while(x!=0)
{
stack[top]=x%2;
top++;
x=x/2;
}
while(top>0)
{
top--;
y=stack[top];
printf("%d",y);

}
}
第2个回答  2014-01-10
没啥问题。不过要注意的是,最后输出的结果是输入的字符的ASCII码值。追问

哎,就是。
我输入个1,我想输出的是00000001,
但却输出00110001.

相关了解……

你可能感兴趣的内容

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