一道C 语言选择题

来源:百度知道 编辑:UC知道 时间:2024/05/16 15:20:25
(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
开始v1=0 v0=1 v2=0
A v1=1 v0=2 v2=1
D v1=1 v0=3 v2=2
e v1=2 v0=4 v2=3
s v1=2 v0=5 v2=4
c v1=2 v0=6 v2=5
r v1=2 v0=7 v2=6
i v1=3 v0=8 v2=7
p v1=3 v0=9 v2=8
t v1=3 v0=10 v2=9
o v1=4 v0=11 v2=10
r v1=4 v0=12 v2=11
回车v1=4 v0=13 v2=12
========================
注意,这里是一个do...while巨型
先做循环体,再判断接受的字符~~~~`所以回车也要运行一次
switch...case语句若没有break跳出,会一直运行下去

选D.
程序的意思是:输入ADescriptor,逐个字母扫描,只要里面的元音字母a,e,i,o,u不管大小写,出现一次v1就加1。所以v1=4
然后每次扫描v0,v2都自加1,注意,是每次都自加的,因为每个case后都没有break语句,所以default语句每次都会执行的。
由于是do-while语句,所以最后一次输入回车,循环也会执行,所以最后v0=13,v2=12
选D