问题 单项选择题

有以下程序:
#include<stdio.h>
main()
int a[]=2,3,5,4,i;
for(i=0;i<4;i++)
switch(i%2)
case0:switch(a[i]%2)
case0:a[i]++;break;
case1:a[i]--;
break;
case1:a[i]=0;

for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");

程序运行后的输出结果是( )。

A.3344

B.2050

C.3040

D.0304

答案

参考答案:C

解析: 本题考查嵌套分支语句,共输出4个值。当i=0时,i%2取余还是0,则执行case 0语句,继续switch语句,此时i为0,数据的下标是从0开始的,a[0]的值为2,则a[0]%2=0,继续执行case 0,数组a[0]++,值变为3,执行break跳出第二重switch语句。出来后继续执行break,跳出第一重switch语句,继续循环;输出第一个值为3。i++后值为1,i%2=1%2取余后值为1,执行case 1,将0赋给a[1],退出switch语句,输出第二个值为0。i++后值为2,i%2=2%2取余后值为0,a[2]的值为5,则a[2]%2=1,继续执行case 1,数组a[2]--,值变为4,执行break跳出第二重switch语句。出来后继续执行break,跳出第一重switch语句,继续循环;输出第三个值为4。i++后值为3,i%2=3%2取余后值为1,执行case 1,将0赋给a[3],退出switch语句,输出第四个值为0。结果为3 0 4 0。

多项选择题
名词解释