(20)若运行以下程序时,从键盘输入 ADescriptor<CR>(<CR>表示回车),则下面程序的运行结果是#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);}
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 各位高手帮忙分析下程序吧 不明白v2怎么变的,还是程序错误??v0+=1后边是分号啊 v2怎么会变成那么大数哦??
參考答案:你的switch case语句没有break,所以每次都是从开始到末尾的执行,直到字符串结束符号出现!
你总共输入了11个字符,其中有A,e,i,o四个要执行 v1加1次,v0,v2加一次
其他7次都只执行v0和v2加一次.
又因为你的循环是先执行再判断,所以\"\\n\"也算一个字符了等于是12个了
所以根据初值
v0=1+12=13;v1=0+4=4;v2=0+12=12了
建议有空了来我的个人空间看看.