有以下程序 #include main() { char *s="120119110"; int n0,n1,n2,nn,i; n0=n1=n2=nn=i=0; do{ switch(s[i++]) { default : nn++; case ’0’

admin2020-03-15  11

问题 有以下程序
#include
main()
{ char *s="120119110";
int n0,n1,n2,nn,i;
n0=n1=n2=nn=i=0;
do{
switch(s[i++])
{ default : nn++;
case ’0’ : n0++;
case ’1’ : n1++;
case ’2’ : n2++;
}
} while(s);
printf("n0=%d,n1=%d,n2=%d,nn=%d\n",n0,n1,n2,nn);
}
程序的运行结果是( )。

选项 A、n0=3,n1=8,n2=9,nn=1
B、n0=2,n1=5,n2=1,nn=1
C、n0=2,n1=7,n2=10,nn=1
D、n0=4,n1=8,n2=9,nn=1

答案A

解析 switch语句执行过程中,default语句块最后执行,case或者default只是作为一个入口,如果执行完某一个case或者default语句块之后没有遇到break,则继续往下执行。该程序中的循环是遍历数组s中的元素:为0时,n0、n1、n2均自增1;为1时,n1、n2自增1;为2时,只有n2自增1;其他情况,nn、n0、n1、n2均自增1;数组s中有2个?0?,5个?1?,1个?2?和1个?9?,循环终止的条件是字符串末尾的?\0?,对应的整数为0,所以答案选"n0=3,n1=8,n2=9,nn=1"。
转载请注明原文地址:https://kaotiyun.com/show/JxCp777K
0

最新回复(0)