下面这道C语言的题怎么做,谢谢了

如题所述

第1个回答  2010-09-15
答案是:

#&

#include<stdio.h>

main()
{int a=2,b=7,c=5; /*定义变量,a,b,c */
switch(a>0) /*执行switch语句 */
{

case1:switch(b<0) /* b<0是一个关系表达式,是假的,故其值是0 */
{
case 1:printf("@");break; /*这两条语句中没有与0相匹配的项 ,也没有default语句 所以什么也不做*/
case 2:printf("!");break;
}
case0:switch(c==5) /*进入第二个case入口,c==5 是真的,故其至是1 */
{
case 0:printf("*");break;
case 1:printf("#");break; /*从这里进入,输出‘#’符号,在执行break语句跳出 这个switch语句*/
case 2:printf("$");break;
}
default:printf("&"); /*接着执行这条语句,输出‘&’*/

}
printf("\n"); /*输出换行*/

}

/*-------------------------------------------------------------
程序中要注意的是对switch语句的理解,语句执行时先算switch后面的表达式的值,再到后面的case中找与它匹配的case,如果有就执行此case后面的所有语句(包括此case后面的其它所有case后面的所有语句),除非遇到break语句,或者是执行到switch的最后一条语句,才跳出switch,要跳出switch语句只有两种可能,1.是遇到break 2.是执行完switch的所有语句,才跳出switch,其中default并不是switch的出口,它和case一样,是平等的,也是一个入口,它不一定要写在switch结构的最后一个语句,它也可以写在中间,或者最前面。这就是为什么上面的程序还执行 default:printf("&"); 的原因。
------------------------------------------------------------*/

/*-----------------------------------------------------------

如果有如下的语句:
#include<stdio.h>

main()
{int a=2;
switch(a>3) /* a>3的值是0 */
{
default:printf("&"); /* 由于没有匹配的值为0的case 故执行 default后面的内容 */
case 2:printf("@"); /*由于没有break语句,所以下面两条case都要执行 */
case 3:printf("#");

}
printf("\n");
}

程序输出的结果是 &@#

到这里,相信对switch有了一定的了解了吧,还是多上机,多看书,谭浩强的那本书很经典的!!
-------------------------------------------------------------*/

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
相似回答