作业帮 > 综合 > 作业

C语言填空题,以下程序的输出结果是()我想知道逻辑推理过程 A.4 2 1 1 B.0 0 0 8 C.4 6 7 8

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/10 02:00:22
C语言填空题,以下程序的输出结果是()我想知道逻辑推理过程 A.4 2 1 1 B.0 0 0 8 C.4 6 7 8 D.8 8 8 8
main()
{char*s="12134211";int v[4]={0,0,0,0},k,i;
for (k=0;s[k];k++;)
{switch (s[k])
{case'1':i=0;
case'2':i=1;
case'3':i=2;
case'4':i=3;
}
v[i]++;
}
for (k=0;k
无论s[k]为'1'、'2'、'3'、'4',都会执行i = 3,原因是各个case语句后面都没有break语句,所以v[k]++,就是v[3]++,字符串s中只有'1'、'2'、'3'、'4'四中字符,共有8个,也就是说,v[3]++共执行8次,所以输出结果是B:0008.
再问: 我这C语言是初学,能麻烦再说的详细点吗?switch中匹配 case '1':i=0;,没有break,switch一直执行下去,是怎么执行的?V[3]++因为for执行了8次而加了8次,那么前面0 0 0 是怎么出来的?谢了
再答: 通常情况下,case语句后面会跟一个break语句,例如 switch(c) { case '1' : i = 0break; case '2' : i = 1;break; case '3' : i = 2;break; case '4' : i = 3;break; default : } 当c为'1'时,会执行i = 0;然后跳出switch,执行后面的语句。但你的代码中,没有break;,就会顺序执行,i = 0,i = 1,i = 2,i = 3,之后才跳出switch,即每次都会执行i = 3,所以v[i]++就是v[3]++,而其v[0],v[1]和v[2]仍然保持0值不变。