问题 单项选择题

以下程序的输出结果是( )。
main()
char*s="12134211";
int v[4]=0,0,0,0),k,i;
for(k=0;s[k];k++)
switch(s[k])
case’1’:i=0;
case’2’:i=1;
case’3’:i=2;
case’4’:i=3;

v[i]++:

for(k=0;k<4;k++)printf("%d",v[k]);

A.4 2 1 1

B.0 0 0 8

C.4 6 7 8

D.8 8 8 8

答案

参考答案:B

解析: 本题考查switch,case语句,当k=0时,循环体成立,执行switch后表达式的值为’1’,执行case’1’,i的值为0,因为没有break语句,继续执行其后的语句,到最后一个语句时i的值为3,此时v[i]++,v[3]=1,接着执行k++后,k的值为1,当k=1时,循环成立,执行switch后的表达式的值为’2’,执行case’2’,i的值为1,因为没有break语句,继续执行其后的语句,到最后一个语句时,i的值为3,此时v[i]++,v[3]=2,接着执行k++后,k的值为2,依次下去,csse’4’也会执行,最后i的值一定为3,到v[3]=8时循环结束,而v[0]~v[2]的值一直没有变化,故选择B选项。

名词解释
单项选择题