/*程序运行时,输入一个整数5*/
#include<stdio.h>
void main()
{
int a,b[10],c,i=0;
printf("输入一个整数\n");
scanf("%d",&a);
while(a!=0)
{
c=a%2;
a=a/2;
b[i]=c;
i++;
}
for(;i>0;i--)printf("%d",b[i-1]);
}
有没有大神能帮我分析分析这道题,最后输出为什么等于101而不是1呢
5%2就是5除以2的余数,等于1
scanf输入5,[a=5]
a!=0成立,开始循环: c=a%2;[c=5%2=1],a=a/2;[a=2],b[i]=c;[b[0]=1],i++;[i=1]
a!=0成立,继续循环: c=a%2;[c=2%2=0],a=a/2;[a=1],b[i]=c;[b[1]=0],i++;[i=2]
a!=0成立,继续循环: c=a%2;[c=1%2=1],a=a/2;[a=0],b[i]=c;[b[2]=1],i++;[i=3]
a!=0不成立,结束循环
for循环顺序输出b[2],b[1],b[0]: 101 即十进制5的二进制表示
追问不好意思明白了,谢谢