c语言基础问题

c语言基础问题如图,图中题目后面的内容是
deflaut: printf("%%");break;

deflaut: printf("&");
}
printf("\n");
}
我有点摸不懂这题,求详解。

第1个回答  2018-05-16
case语句每一种情况都会处理,switch()里面就是表达式语句,a>0为1,b<0为0,注意第一个switch的case1和case0之后没有break,故会继续向下进行,不会跳出第一个switch,答案应该是!*&追问

懂了,意思是有break则跳出它所在的switch是吗?如果switch中所有case都不满足,则执行后面的deflaut?

本回答被提问者采纳
第2个回答  2018-05-16
程序结构:
switch(a>0)
{
case 1: switch(b<0){ 开关b区域 }; //接着没有 break
case 0: switch(c==5){开关c区域 }; //接着没有 break
default: printf("&");
}
printf("\n");
这题的关键 是 各开关的数值等于几。路线图:
int a=2,b=7,c=5 ;
switch(a>0) 这里 初值 a=2, 逻辑式 a>0 为真,得开关值 1 进case 1:
case 1: switch(b<0) 这里 初值 b=7, 逻辑式 b<0 为 假,得开关值 0 进case 0:
case 0: printf("!"); break; 输出 ! 结束开关b . 后面没有 break; 于是 进:
case 0: switch(c==5) 这里 初值 c=5, 逻辑式 c==5 为真,得开关值 1 进case 1:
case 1: printf("*"); break; 输出 * 结束开关c 。 后面没有 break; 于是 进开关a 的default。 default: printf("&"); 输出 &。 结束开关a。 执行 printf("\n"); 程序结束。追问

很详细,非常专业,谢谢你啦

这里还有一题,因为违规所以放不出来,帮解决一下,我会给你悬赏分的啦,谢谢

题目如图,这题我主要是对题目当型循环中的判断表达式自减-s的运行不怎么理解。当型循环是先判断再执行循环体不是吗?那么光秃秃的--s要判断什么呀?求解释顺便解析程序完整运行,为什么最后是-2

第3个回答  2018-05-16
a = 2,那么a > 0为真,switch(a > 0)相当于switch(1),所以进入switch(b < 0)......
b = 7,那么b < 0为假,switch(b < 0)相当于switch(0),所以输出!;
c = 5,那么c == 5为真,switch(c == 5)相当于switch(1),所以输出*;
题目排版太乱了,你仔细看,我都知道我的答案对不对追问

不对,不输出@

追答

改正了

追问

好的好的,我还有一个简单的问题但是不知为何违规了不能提出,你帮忙给看看,谢谢啦

题目如图,这题我主要是对题目当型循环中的判断表达式自减-s的运行不怎么理解。当型循环是先判断再执行循环体不是吗?那么光秃秃的--s要判断什么呀?求解释顺便解析程序完整运行,为什么最后是-2 收起

解释一下,我会给你悬赏分的

追答

是while(--S)吗?
--在变量S之前,那么就是先S减1,再判断S是真是假
题目信息太少了
题目是不是这样的:
S = 1;
while(--S);//S = 0,括号内表达式为假,跳出循环
S -= 2;//S = S - 2 = 0 - 2 = -2
printf("%d\n", S);

追问

有两张图啊

麻烦再看看

第4个回答  2018-05-16
输出一个!