C语言这个怎么做?

为什么我怎么算答案都是10正确是21... 为什么我怎么算答案都是1 0
正确是2 1
展开
 我来答
程序猫K
2020-08-11 · 超过31用户采纳过TA的回答
知道答主
回答量:106
采纳率:87%
帮助的人:21万
展开全部
一般来说必须在case语句结尾添加break语句。一旦switch语句条件匹配时,case后面的程序就会被执行,直到遇到关键字break,否则会执行满足这个case之后的其他case的语句。如果在switch中省略了break语句,那么匹配的case的所有情况(包括default情况)都会被执行。
你这里先执行了switch(x),匹配到case 1,然后执行switch(y),匹配到case 0:a++,a变成1,遇到break,终止了switch(y),注意这里break只针对switch(y),并不是终止switch(x)。
由于switch(x)里的case 1并没有break,所以它还会继续执行case 2,即a++,b++,这时候a=2,b=1。由于case 2里面有break,所以执行到case 2就终止了。
syht2000
高粉答主

2020-08-11 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
你没发现最外面那个case 1后面除了跟了一个switch之外,并没有写break么,这会导致执行完外面的case 1之后,会接着执行case 2,最终就是
a++;
a++;b++;
结果当然就是2 1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2020-08-11
展开全部
这题有点坑
switch case的处理是这样的,如果不加入break,那么他会顺着那个找到的case顺序执行下去,一直到遇到break,或者return
所以后面的case 2的内容也会执行一次
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liujing198201
高粉答主

2020-08-11 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.2万
采纳率:65%
帮助的人:950万
展开全部
这道题目确实容易忽悠人,因为把歪判断完以后,a=1,b=0,这时switch(y)已经结束了。但是是switch(x)在判断x=1以后并没有break;这时就得判断x=2,这时候又把a+1,b+1,然后break;switch(x)才结束。所以最后结果是a=2,b=1。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
豆豆在路上吃饭
2020-08-11 · 超过21用户采纳过TA的回答
知道答主
回答量:147
采纳率:83%
帮助的人:13.2万
展开全部
在执行完第一个case 1后面没有break所以没有跳出循环,就执行下去case 2,然后case 2后面有break就跳出循环所以是a=2,b=1;你可以把case 2 和case 屏蔽掉看结果 和case 1后面加break,就明白了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帆哥上视频
2020-08-11
知道答主
回答量:7
采纳率:0%
帮助的人:3895
展开全部
这应该是写了个最简单的程序,判断xy的值,然后对应的ab各自自加一,switch跟case就像开关一样,当switch中的变量满足case的值,就执行相印的程序,没有break就会一直往下执行,然后case1执行完是一和零,然后执行了一步case2就成了二和一,然后才有了break跳出去的,所以最后就是a=2,b=1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式