中易网

c语言问题!!

答案:5  悬赏:80  
解决时间 2021-04-22 08:14

#include "stdio.h"
void main()
{int x=1,y=0,a=0,b=0;
switch(x)
{case 1:switch(y)
{case 0: a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
case 3:a++,b++;
}
printf("a=%d,b=%d\n",a,b);
}

----------------------------------------------------------------------------------------------

#include "stdio.h"
main()
{int a=2,b=7,c=5;
switch(a>0)
{ case 1:switch(b<0)
{case 1:printf("#");printf("\n");break;
case 2:printf("&");printf("\n");break;
}
case 0:switch(c==5)
{case 0:printf("*");printf("\n");break;
case 1:printf("@");printf("\n");break;
default:printf("$");printf("\n");break;
}
default:printf("!");
}
printf("\n");
}

-----------------------------------------------------------------------

这两个程序怎么也运行不起来,老是有错误,但是我看书上的答案又不理解,高手帮我解决下

最佳答案

格式弄好比较好分析:


#include "stdio.h"
void main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:
switch(y)
{
case 0: a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
case 3:a++,b++;
}
printf("a=%d,b=%d\n",a,b);
}


首先说明,一个case后面没有break,会继续执行接下来的case.


过程分析:x=1,运行case1里面的,case1里又是个switch,y=0,执行case 0的a++(a的值为1).


从最外面的case来看.现在case1的内容执行完了,由于没有break,会执行下面的case2,a++,b++(a的值为2,b的值为1),由于case2后面有break,跳出,case3不被执行.所以结果为a=2,b=1;



不得不强调,格式真的很重要....


希望是粘的时候变形了,不是一开始在编译器里就写成这样....


#include "stdio.h"
main()
{
int a=2,b=7,c=5;
switch(a>0)
{
case 1:
switch(b<0)
{
case 1:printf("#");printf("\n");break;
case 2:printf("&");printf("\n");break;
}
case 0:
switch(c==5)
{
case 0:printf("*");printf("\n");break;
case 1:printf("@");printf("\n");break;
default:printf("$");printf("\n");break;
}
default:printf("!");
}
printf("\n");
}



分析:最大的switch里分3项,case1,case0,default;


首先a>0为真,那么a>0这个表达式的值为1,执行case1,case1里的switch,由于b<0为假,所以表达式b<0的值为0,由于无case0,所以这个大的case1执行完毕,由于没有break,将执行下面的case0


c==5为真,表达式的值为1,所以执行case0里的switch里的case1,输出@,然后break掉,外层的case0执行完毕,由于这个外层的case0无break,所以执行case0下面的default,输出!,然后switch结束,执行最下面的那个printf,打印一个回车 结束.

全部回答
可以运行 第一个答案是a=1,b=2 第二个是@ ! 不知道是不是这个答案

#include "stdio.h" void main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: { switch(y) { case 0: { a++; break; } case 1: { b++; break; } } break; } case 2: { a++; b++; break; } case 3: { a++; b++; break; } }

2.

#include "stdio.h" void main() { int a=2,b=7,c=5; switch(a>0) { case 1: { switch(b<0) { case 0: { printf("#");printf("\n");break; } case 1: { printf("&");printf("\n");break; } } break; } case 0: { switch(c==5) { case 0: { printf("*");printf("\n");break; } case 1: { printf("@");printf("\n");break; } default: { printf("$");printf("\n"); } } break; } default:printf("!"); } printf("\n"); } printf("a=%d,b=%d\n",a,b); }

我猜你的程序意思表达错了

正确的解答如上:

输出和你想的有差异的话

敬请赐教

你指的运行不起来是什么意思,说清楚点啊。如果你只是看不到结果的话就想上面说的一样,在后面加上一个getch();,如果你用的turboc还可以按alt+F5看到结果。

在程序最后加个getch();程序没错只是没有使屏幕停止下,你看不到结果一闪而过
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
摩尔分子量、密度、体积、重量之间有什么关系
加盟网店加盟费一般多少,买服装?
佛山市禅城区学跳舞的地方
辽宁恒富农业生产资料公司地址有知道的么?有
怎么清掉 我QQ1084676909告诉我 好不
夏威夷旅游签证
叶县邮政国内小包快递的地址与电话 ?
找一个上海的亲子活动群加入。
伤感的歌曲谁知道?
两地爱情会长久吗
麦考瑞的预科在哪里读?
没有胎心是什么原因导致的呢?如果出现了这种
刘东升是谁? 刘东升整形效果怎么样啊?
求现在最流行的伤感歌曲?
朋友是相互欺骗的吗?她骗了我很多次…我应该
推荐资讯
到底是闪亮滴眼液好还是珍视明好啊?
怎么养放养鸡
热舞派对怎么能P多点
用过 肤美灵 洗面奶的朋友,说下你们的感受啊
有哪些国外户外品牌的冲锋衣抗风保暖啊
装修的垃圾,大伙都倒在哪里了?
DNF中血啸胸甲多少钱啊,我是河北1区的。
滁州市龙蟠大道105号滁州市技术监督检测中心
家里装的锅炉和暖气片,花了很多钱,可为什么
头发爱生油怎么办?
ppr管材中的 s4 s5 s3.2 都到表什么
共信赢财富中心·揭东营业部地址在哪,我要去
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?