有下列程序  #include <stdio.h>  main()  {int a=123456,b;   while(a)   {b=a%10;   a/=10:   switch(b)   {default:printf("%d",b++);  

admin2022-04-01  40

问题 有下列程序
 #include <stdio.h>
 main()
 {int a=123456,b;
  while(a)
  {b=a%10;
   a/=10:
   switch(b)
   {default:printf("%d",b++);
    case 1:
    case 2:printf("%d",b++);break;
    case 3:printf("%d",b++);break;
    case 4:printf("%d",b++);
   }
  }
 }
 程序执行后的输出结果是(          )。

选项 A、76654321
B、12345667
C、67564321
D、654321

答案C

解析 程序中a的初值为123456,while循环的终止条件为a为0;每次循环,都将a的最后一位数字赋给b,a除以10后(丢弃最后一位)重新赋给a。在循环过程中,a(b)的取值为123456(6)、12345(5)、1234(4)、123(3)、12(2)、1(1);循环体中,执行switch(b)语句,当b的数值不等于1、2、3、4时,首先执行default语句,输出b并将b自增1,再执行case 1,case 2语句,输出自增后的b值;当b的数值等于1、2、3、4时,只执行case语句,输出b的值;综上,当b为6、5时,分别输出67、56;当b为4、3、2、1时,分别输出4、3、2、1,最终程序输出结果为:67564321,本题答案为C。
转载请注明原文地址:https://kaotiyun.com/show/7nkp777K
0

随机试题
最新回复(0)