不好意思请教个问题

来源:百度知道 编辑:UC知道 时间:2024/05/06 01:24:00
(20)若运行以下程序时,从键盘输入 ADescriptor(表示回车),则下面程序的运行结果是#include
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);}
A)v0=7,v1=4,v2=7
B)v0=8,v1=4,v2=8
C)v0=11,v1=4,v2=11
D)v0=13,v1=4,v2=12
答案为什么是D 怎么搞出来的 谢谢各位.~

其实这题好象答案给的很奇怪
只有D的答案是v0比v2大1
初始值就是大1,而v0和v2是进行的相同的运算
所以基本可以不用算就知道是D了

答案是这麼搞出来的,你可以不用知道具体结果,一样可以选择出是D,default:v0+=1;v2+=1因为遮中它们执行的次数应该是一样的,但是v0初值比v2大一,所以最后也大一。
上面是因为你所有的case语句都没有break;跳出语句,所以它总是从case e;执行到default:,上面你输入了多少个字母它就执行了多少次;所以就是D啦。