简答题
👁️ 浏览量:

试题题干

/*程序运行时,输入一个整数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。