请教!!!

蹦跑中的蜗牛 2003-07-14 02:06:10
运行一下程序后,如果从键盘上输入china#<回车>,则输出的结果是:
#include <stadio.h>
main()
{int v1=0,v2=0;
char=ch;
while ((ch=getchar())!='#')
switch (ch)
{case 'a';
case 'h';
default: v1++;
case '0':v2++;
}
printf("%d,%d\n",v1,v2);
}
这是一道二级题,请各位大侠帮我解答,最好写出分析,尤其是在关键部分,请帮我写出文字说明,感激不尽,谢谢各位大侠!!!!!
...全文
74 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
蹦跑中的蜗牛 2003-07-14
  • 打赏
  • 举报
回复
呵呵,各位不愧为高手呀!尤其是星雨大侠解释的非常详尽!
qinxiaolin 2003-07-14
  • 打赏
  • 举报
回复
#include <stdio.h>
main()
{int v1=0,v2=0;
char=ch;
while ((ch=getchar())!='#')
switch (ch)
{case 'a':;
case 'h':;
default: v1++;
case '0':v2++;
}
printf("%d,%d\n",v1,v2);
}
分析如下:输入:a# 结果:1,1//输入‘a’满足条件‘a’有没有break;所以v1++,v2++都执行;
输入:a再输入回车再输入# 结果2,2// 输入‘a’满足条件‘a’有没有break;所以v1++,v2++都执行1,1;又输入回车所以default 又没有break所以又执行一次2,2
若输入qqq结果3,3//应为输入qqq三次都满足default所以v1++,v2++执行3次,3,3
类似的,可以自行推理
jscsqb 2003-07-14
  • 打赏
  • 举报
回复
我认为是v1=5
v2=0;
v2++好像没有被执行过吧。

hawkxjy 2003-07-14
  • 打赏
  • 举报
回复
agree the doer_ljy(可战)
gg0767 2003-07-14
  • 打赏
  • 举报
回复
楼上说得对。
doer_ljy 2003-07-14
  • 打赏
  • 举报
回复
5,5回车符
case 中,如果不人为地break他后面的case中的语句继续执行!
所以,应该执行了5次v1++,v2++;
所以我认为是5!
蝎子i软件 2003-07-14
  • 打赏
  • 举报
回复
关键就是switch语句。
建议你再看看书。

关键中的关键:
case语句执行直到break或}结束。

70,037

社区成员

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

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