若运行以下程序时,从键盘输入 ADescriptor(表示回车),则下面程序的运行结果是

#include <stdio.h>

int 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);

return 0;

}

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
怎么做的,我怎么做出来的与答案相差很大呢

ADescriptor ; Aeio 四个元音,v1 +1 所以 v1 = 4;

一共有11字符,外加\n 共12个,这样v0 +=12,v2+=12
所以 v0 =13, v2 = 12

因为case ′u′:case ′U′:v1+=1; 后面没有break,所以后面的需要运行的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-01
答案有错误,代码中 v0=0; v2=0; default: v0 =1; v2 =1; 很明显最终: v0==v2 vc6运行结果 ADescriptor vo=12,v1=4,v2=12 Press any追问

那为什么是12,4,12呢,不是0或1加1也不可能等于12,4,12啊