下面这个C语言题目答案为什么是这样的?

题目如下:
#include "stdio.h"
main()
{
char c;
int v1=0,v2=0;
do
{ switch(c=getchar())
{ case 'a':v1+=1;
case 't':case 'T':v2+=1;
default:v1+=1;v2+=1;
}
} while(c!='\n');
printf("v1=%d,v2=%d\n",v1,v2);
}
答案:v1=7,v2=9。(编程证明此答案是正确的)
疑问:1.那个default是属于哪个的?整体的还是case 't'的呢?2.答案怎么得出来的呢?
各位,不好意思,输入Total。

default就是switch()表达式不满足上面的所有case,就执行default。不过你上面每个case后面都没有break,符合上面case也会接着执行default的。

答案要看你输入的是什么啊,程序的作用是输入一个字符如果是a那么v1加一,然后执行case 't',让v2加一,然后执行default,v1和v2都加一。然后接着获得字符进行下一次判断。不想这样的话每个case要执行的语句完了之后加上一句break;

Total先得到T,从case 'T'执行,之后v2=1,然后执行default,之后v1=1,v2=2;然后是o,同样之后v1=2,v2=3;然后是t,先执行case 't',之后v2=4,再default,之后v1=3,v2=5;然后是a,先case 'a',v1=4,再case 't',v2=6,再default,v1=5,v2=7;然后得到l,执行default,v1=6,v2=8,再得到'\n',执行default,v1=7,v2=9,因为遇到'\n'了,循环结束
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-06-03
当没有case子句匹配时,就执行default子句。default子句
是任选的(可有可无)。若无default子句,此时switch语句
就什么动作也没有做。

参考资料:我的读书笔记

第2个回答  2008-06-03
default就是switch()表达式不满足上面的所有case,就执行default。
不过你上面每个case后面都没有break,符合上面case也会接着执行default的。
第3个回答  2008-06-03
default 是不满足上面两个情况执行default 程序