亿康丽 互动百科:一个switch的问题

来源:百度文库 编辑:高校问答 时间:2024/04/29 12:02:42
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;/*最后一个CASE是系统默认的吗如果上面都不符合就输出最后一个? */
}
v[i]++;
}
for(k=0;k<4;k++) printf("%d ",v[k]);
答案是 0 0 0 8 请问8怎么来的是循环8次自增可是k<4能详细给我说一下吗?

默认case用default标记表示

第一次循环的次数是s的长度
所以有8次

少了break
正确的如下
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; break;
case '2':i=1;break;
case '3':i=2;break;
case '4':i=3;break;/*最后一个CASE是系统默认的吗如果上面都不符合就输出最后一个? */
}
v[i]++;
}