#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;
}
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=3
4.所以最后for(j=0;j<4;j++)
printf("%d",z[j]);
输出:0008