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时,程序的输出才是1。
#include
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]); //逆序输出每次的余数
}
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
5%2 = 1 ;这个取余数的,