牛人帮忙看看

maodsky 2009-04-18 03:43:12
#include"stdio.h"
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;
}
他的结果31是怎么来的啊!
...全文
73 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
KevinHo 2009-04-18
  • 打赏
  • 举报
回复
你怎么没有break啊???
这样的话执行了一个case,下面如果还有case的话就顺着下来了
OenAuth.Core 2009-04-18
  • 打赏
  • 举报
回复
不带break会一直执行
fox000002 2009-04-18
  • 打赏
  • 举报
回复
switch 语句没有 break,从 case 执行到 default

i == 1,a 增加 8
i == 2,a 增加 8
i == 3,a 增加 10
i == 4,a 增加 5

8+8+10+5 = 31
maodsky 2009-04-18
  • 打赏
  • 举报
回复
谢谢了,是书上的一道题!
  • 打赏
  • 举报
回复
for(i=1;i <5;i++)
{
switch(i)
{
case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
}
}

 case里不带break,执行完每条case会继续顺序执行到default,你就一个个判断就是了,都是C语法,这还需要什么高手帮忙看么?楼主,你能看懂的,不复杂.
jackyjkchen 2009-04-18
  • 打赏
  • 举报
回复
#include <stdio.h>
int main()
{
int a=0,i;
for(i=1;i <5;i++)
{
switch(i)
{
case 0:break;
case 1:break;
case 2:a+=3; break;
case 3:a+=2; break;
default:a+=5; break;
}
}
printf("%d\n",a);

return 0;
}


要习惯这样
jackyjkchen 2009-04-18
  • 打赏
  • 举报
回复
你没有break;所以每次都是+2+3+5全都加……而且你的编程风格不好,别用VC6了
qqwx_1986 2009-04-18
  • 打赏
  • 举报
回复
i=1 ==> a+=3;a+=5 ==>a=8
i=2 ==> a+=3;a+=5 ==>a=16
i=3 ==> a+=2;a+=3;a+=5 ==>a=26
i=4 ==> a+=5 ==>a=31


#include"stdio.h"
main()
{
int a=0,i;
for(i=1;i <5;i++)
{
switch(i)
{
case 0:
case 3:a+=2; break;
case 1: break;
case 2:a+=3; break;
default:a+=5; break;
}
}
printf("%d"\n,a);
return 0;
}
看这样后是不是你要的答案,考点是switch case 中的break 运用


69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧