以下程序的输出结果是( )。
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,依次下去,case’4’也会执行,最后i的值一定为3,到v[3]=8时循环结束,而v[0]~v[2]的值一直没有变化,故选择B选项。