C语言中5%2等于多少,b[i-1]=101?

/*程序运行时,输入一个整数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的二进制表示

追问

不好意思明白了,谢谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-20

这是一个把输入的十进制数转换为二进制数并输出的程序。只有当你输入为1时,程序的输出才是1。

#include<stdio.h>

void main()

{ int a,b[10],c,i=0;

  printf("输入一个整数\n");

  scanf("%d",&a);

  while(a!=0)

  { c=a%2; //计算a除以2的余数 

    a=a/2; //去掉二进制的最低位 

    b[i]=c; //把余数保存到数组 

    i++;

  }

  for(; i>0; i--)printf("%d",b[i-1]); //逆序输出每次的余数 

}

第2个回答  2020-02-20
5%2取余等于1
While第一轮:c=1,a=2,b[0]=1,i=1
While第二轮:c=0,a=1,b[1]=0,i=2
While第三轮:c=1,a=0,b[2]=1,i=3
此时a=0,结束循环
输出为b[2]b[1]b[0]
所以是101
第3个回答  2020-02-20
5%2 = 1 ;这个取余数的,