试题题干
/*程序运行时,输入一个整数5*/
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]);
}
参考答案
试题解析
因为在程序运行时,输入一个整数5,即a=5,符合while(a!=0),即c=a%2=5%2=1,a=a/2=5/2=2,b[0]=c=1,执行i++,变量i为1;
当a=2时,符合while(a!=0),即c=a%2=2%2=0,a=a/2=2/2=1,b[1]=c=0,执行i++,变量i为2;
当a=1时,符合while(a!=0),即c=a%2=1%2=1,a=a/2=1/2=0,b[2]=c=1,执行i++,变量i为3;
当a=0时,不符合while(a!=0),结束循环while语句。
执行for循环,当i=3时,输出b[i-1]=b[2]的值1,执行i--,变量i的值为2;
当i=2时,输出b[i-1]=b[1]的值0,执行i--,变量i的值为1;
当i=1时,输出b[i-1]=b[0]的值1,执行i--,变量i的值为0;
当i=0是,不符合i<0,结束循环,即输出的结果为101。