#include <stdio.h>
int main()
{
char *p="12134221";
int z[4]={0,0,0,0},j,i;
for(j=0;p[j];j++)
{switch(p[j])
{
case'1':i=0;
case'2':i=1;
case'3':i=2;
case'4':i=3;
}
z[i]++;
}
for(j=0;j<4;j++)
printf("%d",z[j]);
return 0;
}
可以分析一下下面代码答案0008是怎么得到的吗?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
qzjhjxj 2021-09-02 20:16关注1.char *p="12134221"; 这里定义了字符串 p 长度为8
2.for(j=0;p[j];j++) 这个for()循环共8次
3.switch(p[j])
{
case'1':i=0;
case'2':i=1;
case'3':i=2;
case'4':i=3;
}
由于每个case : 后面没有break,所以不管switch(p[j]) 是什么,都会执行到 case '4': i=3; 所以z[i]++ == > z[3] ++ , z[3] 连加 8次 ,数组z[0] z[1] z[2] 均为0.
p[0]=1,i=3
p[1]=2,i=3
p[2]=1,i=3
p[3]=3,i=3
p[4]=4,i=3
p[5]=2,i=3
p[6]=2,i=3
p[7]=1,i=34.所以最后for(j=0;j<4;j++)
printf("%d",z[j]);
输出:0008本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报