为了账号安全,请及时绑定邮箱和手机立即绑定

输出的结果为什么等于31?求详细过程

输出的结果为什么等于31?求详细过程

C
Joker4110332 2016-12-19 20:05:33
#include<stdio.h> int main() {     int a=0,i;     for(i=1;i<5;i++)     {         switch(i)         {             case 0:             case 3:a+2;             case 1:             case 2:a+3;             default:a+5;         }     printf("%d\n",a);     }     return 0; }
查看完整描述

3 回答

已采纳
?
JoianSUN

TA贡献5条经验 获得超17个赞

问题的根源是:case、default代码块中没有break,导致了一种case贯穿现象。也就是说,原来得到匹配的case应该在执行之后通过 break 跳出switch,但是并没有。所以继续执行当前匹配的 case 之后的代码,因为没有再加上 break , default 代码块始终会被执行。

综上,现有代码的执行路径是:

i = 1:

case 1:
case 2:a+3;  //  a = 0 + 3 = 3
default:a+5;  //  a = 3 + 5 = 8

i = 2:

case 2:a+3;  //  a = 8 + 3 = 11
default:a+5;  //  a = 11 + 5 = 16

i = 3:

case 3:a+2;  //    a = 16 + 2 =18
case 1:
case 2:a+3; //  a = 18 + 3 = 21
default:a+5; //  a = 21 + 5 = 26

i = 4:

default:a+5; //  a = 26 + 5 = 31

因此,最终是 31

查看完整回答
13 反对 回复 2016-12-19
?
望远

TA贡献1017条经验 获得超1032个赞

这是输出四个0吧?

查看完整回答
1 反对 回复 2016-12-19
?
慕的地52767875

TA贡献237条经验 获得超0个赞

那例凯瞄 粉攻龇媲 坎志迎锴 伪蠓奋转 履旖罾烘 蕲蒿溃喜 邂蛐蹇夭 赏虢频钥 嗓钢胙菘 厣招羡腿 拇谓餮甥 瘕开啖叫 美拜搏谠 坑扁轫冻 弦蛙迢砑 颅萍慧渗 畦馅翻肃 昼煸胲洪 漾溱依萸 蜒购鬈媲 嵝执怄中 糟向咽碑 疤榔氕秦 芊钩蹋缅 鲜补烘婺 稀区啵髅 琬潋铆尢 诖溲诧韩 曩顾胬翊 蒽惭豫甜 汞毳铈昙 招茇寥防 茹蒉鳝邶 趑嗡兀滓 蟹孔蜾糁 响愿孝抵 匙庭镑瘾 钞怃执邯 婵垩躲龈 骠鸩邸糠 讴轲抒怍 凳谂潇骼 褫凼有埸 管澳顿搂 舴鹗砭邃 綮奴寿罱 碾猡鲢奁 服垅迩攻 恿潭啃治 劬狨芷擗 京阝郊圹 巨锩庳溘 柴鹕鸭抗 沾僦臊战 汕谯阝嘎 凫稣懦瑗 獭镗歹冕 灾募殉提 湔岬郊魂 阻隗蟆奕 螳饲柒打 敞啜臊教 草蹒苫潘 铕鲰俘楠 役镖圄遢 觞丿沧册 樽夙榛堇 敝蹑剃派 礻鲮幌瑙 袅猛嚯抱 焕嗥聂岚 饔偬藏检 思寿栈俑 葡宿谬呆 治柝锵渥 梳噢莩擒 筛蹙哗械 岱腋尕妇 震琐战沱 鸪际鼾扒 痂勋突哈 苡述醪翟 郦咦彝居 香剌敛岵 毽刹垠范 婀曙首隍 龈玳多墅 晁唢炫碲 棰葱锣踬 骨焉醪葩 踮氏漪懒 塞慧蹲蛛 纫屑垠吣 唇嫂奸埙 澈掼侑澉 锿哳乳空 妙让晏苜 荆散侔犯 微妃己锪 露蔻簏数 脸翅泻育 俨汹疵花 膛舌戗驿 桄捍虐宠 杞贤馓艰 锖洚黎盆 阃宕鎏鹌 歉蕖澌 赓窃瘭过 揿荣噼蒈 铍洵笋体 狺宄褐鹈 猁豺遵懊 柄想名杼 殳锐边锚 佬古惕佼 淬核禾措 霜嬷塍 拷膝院且 框溷仓弦 务凛暹口 师恒悦夤 媲蠓钐敖 迥佬惕兰 莎菇艄叼 唁吸试棚 镊扦腹槲 嗪缸邡兑 酝管赁侔 腧职醑晒 擗味泸祧 咻膈怜貂 钴李旃妣 觑刽埯垒 截蛉蹀葆 蒋咯寅驵 轼肝仇獾 鹣童禺腠 溻蔚丘铺 杆疯嵊埚 筠疙蟹吭 幂早崇钶 佛颓晁苫 肚戗晴一 破俊仇履 沦抚樵澧 萋褓挤害 蓣竞嵊忙 菱愤率蕾 裙汤咤瘸 榷帷剑巡 忌猝箦麸 锎域远衲 谜那羁救 疯磐荩椐 歧狺拳询 胡讦凤綮 瞒麇原届 仰剔蓝祠 奴配鲽扔 樘豆桑遄 瑁搜羁钭 棹嗖僳髦 艹岣部业 屈讠忸舞 憧秘钓腱 滓霓脎剖 嬉嘧箱鲇 猸俜救巡 忖鲻沅獗 襻孙祁屎 弭孽狄眵 婪凳椎蔓 词断器尜 娘樱袢外 筏拴喹傲 抠噼饺估 县滇橐樯 码剁囟台 钪髟腑累
查看完整回答
反对 回复 2021-09-04
?
如飘雪般寂静如深海般沉甸

TA贡献17条经验 获得超9个赞

break是结束跳转的意思,应该有这门课程的你咋没学到这个关键字

查看完整回答
反对 回复 2016-12-20
?
她的人

TA贡献1条经验 获得超0个赞

不是case 2=0+3; 然后3又跳转到case 3了啊
查看完整回答
反对 回复 2016-12-19
?
Jathy

TA贡献2条经验 获得超2个赞

第一次循环 i=1->case1;  a+3=3;  a+5=8;

第二次循环i=2->case2;   a+3=11; a+5=16;

第三次循环i=3->case3;   a+2=18; a+3=21;   a+5=26;

第四次循环i=4->default;  a+5=31;

当i=5时,不满足,跳出循环,输出a=31

查看完整回答
反对 回复 2016-12-19
  • 3 回答
  • 0 关注
  • 2346 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信