问题
单项选择题
执行下面程序的正确结果是( )。 main() { float a=1.9;switch (a){ case 0:printf("0000"); case 1:printf("1111"); case 2:printf("3333");} printf("%f", a); }
A.1.900000
B.111133331.900000
C.33331.900000
D.00001111233331.900000
答案
参考答案:B
解析: switch语句只接受int型变量,如果不是则隐式转换为int,由于C语言中float到int的转换是截尾取整,故在switch中从case 1:标号处开始执行,首先输出4个1。此时又因为case 2:之前并没有break;之类的跳转语句,所以case 2:标号处的语句也被执行,输出4个3。最后以默认的浮点数格式输出变量a,变量a在switch语句中并未被改变,故最后输出为1.900000,所以应该选择B。