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

admin2018-06-29  29

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

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

答案C

解析 程序中a的初值为1234.56,while循环的终止条件为a为0;每次循环,都将a的最后一位数字赋给b,a除以10后(丢弃最后一位)重新赋给a,所以循环过程中,a(b)的取值为123456(6)、12345(5)、1234(4)、123(3)、12(2)、1(1);循环体中,每次循环都对b执行switch语句,当b的数值不等于1、2、3、4时,首先执行default语句,输出b并将b自增1,再执行ease1,case2语句,输出自增后的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/B3xp777K
0

最新回复(0)