C语言中关于case语句

[复制链接]
查看11 | 回复3 | 2010-5-21 08:16:52 | 显示全部楼层 |阅读模式
若运行以下程序时,从键盘输入ADescriptor(代表回车),则下面程序运行结果是?
#include"stdio.h"
main()
{
char c;
int v0=1,v1=0,v2=0;
do
{
switch(c=getchar())
{
case 'a':case'A':
case 'e':case'E':
case 'i':case'I':
case 'o':case'O':
case 'u':case'U':v1+=1;
default:v0+=1;v2+=1;
}
}
while(c!='\n');
printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);
}
关键是分析程序运行过程!谢谢!

回复

使用道具 举报

千问 | 2010-5-21 08:16:52 | 显示全部楼层
1.定义就免了2.程序要求从键盘输入一字符,当输入的字符不为回车时始终执行do...while循环,当输入的字符为case中的任意一个时,执行那两条自加语句,当不为case所标识的字符时,只执行第二句,因为没有 break3.最后回车结束得出结果 v0=13,v1=4,v2=12
回复

使用道具 举报

千问 | 2010-5-21 08:16:52 | 显示全部楼层
首先是do while 至少执行一次 其次case: 后面都没有加break;所以只要有符合的之后的每个CASE 都会运行.举例:假设你输入一个a,case U:也会执行 因为你 case 后面有break; 所以V1+1之后等于1default 也执行 v0+1 v0=2 v2+1 v2=1; while 条件成立 所以还要执行一次 。这次
回复

使用道具 举报

千问 | 2010-5-21 08:16:52 | 显示全部楼层
这是一个统计元音字母(大小写都算)的函数v0=12,v1=4,v2=11
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行