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

admin2022-10-24  38

问题 有下列程序
 #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的取值分别为123456、12345、1234、123、12、1,b的取值分别为6、5、4、3、2、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/HXkp777K
0

最新回复(0)