C语言程序设计 我是C语言初学者,这有一道switch语句的题,请大家帮帮忙,帮我解答一下,说一下分析过程。

#include<stdio.h>main(){intc=0,k,for(k=1;k<3;k++)switch(k){default:c+=k;case2:c++;bre... # include <stdio.h>
main()
{ int c=0, k,
for(k=1; k<3; k++)
switch (k)
{ default: c+=k;
case 2: c++; break;
case 4: c+=2; break;
}
printf("%d\n", c);
}
程序运行后的输出结果
这道题答案给的是3,但我不知道是怎么的出来的,请高手讲解一下谢谢
展开
 我来答
就是佐
2011-08-04 · TA获得超过138个赞
知道答主
回答量:124
采纳率:0%
帮助的人:88.9万
展开全部
for(k=1; k<3; k++)
switch (k)
{ default: c+=k;
case 2: c++; break;
case 4: c+=2; break;
}
这都是for的循环这个知道吧?
问题就是你的default: c+=k;
后面没有 break
所以k等于1的时候 执行了default: c+=k;
c等于1
不会跳出
还会继续执行case 2: c++; break
c等于2了 。
然后 k等于2
c等于3了。
k高人
2011-08-04 · TA获得超过700个赞
知道小有建树答主
回答量:561
采纳率:0%
帮助的人:151万
展开全部
就按执行顺序分析吧:
首先c=0,k=1,
首次进入循环:
进入switch执行default,c+=k,这时c==1,
注意:关键!!!:此时,因为没有break,要执行c++,这时c==2,然后break;k++,k变成2了
再次进入循环,因为k==2,执行case 2:c++;c变成3,break跳出,k++,k变成3,不满足循环条件,循环结束!
所以:c==3

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
予恋寻十1K
2011-08-04 · TA获得超过941个赞
知道小有建树答主
回答量:977
采纳率:50%
帮助的人:854万
展开全部
进入循环,k=1,因为case中没有值与之想匹配,所以执行default语句:此时c=c+k=1。
注意:default之后,没有break,所以接着执行c++,此时c=2。
第二次循环,k=2,由于case2:,所以执行c++。c=3,然后就 输出c=3了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
larry_evants
2011-08-04 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4544
采纳率:0%
帮助的人:5307万
展开全部
default放在前面,循环中每次都运行c+=K,其他的不运行。
因此是3,可以单步运行,看一下具体的程序运行过程。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-08-04
展开全部
for循环中、
第一次,k==1没反应;
再来,k==2,switch语句中c=c+k=2,,执行语句 case 2;c++→c=3;
over;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
·止于至善·
2011-08-04
知道答主
回答量:14
采纳率:0%
帮助的人:5.1万
展开全部
k的初值为1
第一遍循环,k=1时,case:2和case:4都不满足,所以,default:c=k+1=2,k=2;
第二遍循环,k=2时,case:2,c=2+1=3,k=3;
因为k=3,所以退出循环,输出c的值为3.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式