c语言指针问题不太懂思路

  1. #include <stdio.h>
    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;
    
    }
    v[i]++;
    }
    for(k=0;k<4;k++) printf("%d",v[k]);
    }

s的类型是 char * 。它是一个指针,这个指针指向一个字符串。
这个程序就是通过遍历统计s中1、2、3、4的个数,存在数组v里。
另外你的程序有两处错误,第一int v[4]= (0,0,0,0)应该用{}括起来 第二case语句后面要加break
改完之后是这样:

#include <stdio.h>
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;
        }
        v[i]++;
    }
    for(k=0; k<4; k++)
        printf("%d",v[k]);
}

img

你这代码不行啊,case没用用break,最后i值会始终是3