问题
填空题
以下程序的运行结果是 【9】 。 main() { int a=2,b=7,c=5; switch(a>0) { case 1: switch (b<0) { case 1:printf("@"); break;case 2:pnntf("!"); break; } case 0: switch (c==5) { case 0:pnntf("*"); break;case 1:printf("#"); break;case 2:printf("$"); break; } default: printf("&"); } printf("\n"); }
答案
参考答案:#&
解析: 首先看最外面的switch,其表达式为a>0,结果为真(即1),从case 1:标号处开始执行。这里又是一个switch语句,其表达式为b<00,结果为假(即0),由于没有case 0:或default:标号,所以直接跳过此switch语句。因为没有遇到break;语句,所以继续执行进入内部第2个switch语句,其表达式为c==5,结果为真,从case 1:标号处开始执行,输出一个#,遇到break;语句,跳出该内部switch语句,最后执行default:标号后的输出语句输出一个&后,整个外部switch语句执行完毕。程序最后输出的换行符不会显示,所以本题应该填#&。