若运行以下程序时 从键盘输入 ADescriptor(表示回车) 则下面程序
问题详情
若运行以下程序时,从键盘输入 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=%dn",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
解析:本题考查switch语句的掌握。必须撑握以下内容:首先应该明白switch语句的语法格式:
switch语句的语法格式为:
switch (表达式)
{
case 常量表达式1:语句组1;
case 常量表达式2:语句组2;
case 常量表达式n:语句组n;
default:语句组n+1;
}
另外,以下几点关于switch语句的重点:
① 系统在执行时计算开关表达式的值;② 根据所得的值在各个case标号表达式中寻找匹配,直到发现与表达式匹配的标号(本例中匹配的是case 'B':);③ 找到匹配后执行后面相应的语句表,顺序往下执行;④ 如果无相匹配的标号,若存在default标号,则执行该语句标号后面的语句表n+1;当不存在default标号时,不执行switch中的任何一个语句表。
一般而言,在多分支结构中总会出现"意外"的情况,这时均可归入default程序段,作统一的处理。default标号是可选性的,不必每次都有,视需要而定。switch语句中还可以包含switch语句,形成switch的嵌套。