这个数组的循环输出怎么分析呀

#include <stdio.h>
main()
{
    int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
    for(i=0;i<12;i++)
    c[s[i]]++;
    for(i=1;i<5;i++)
    printf("%d",c[i]);
    printf("\n");
}

循环过程见注释,其实就是S数组里面出现了几个1、2、3、4,c数组的对应位置就++几次


//NO.11
#include <stdio.h>
int main()
{
    int s[12] = { 1,2,3,4,4,3,2,1,1,1,2,3 }, c[5] = { 0 }, i;
    for (i = 0; i < 12; i++)
        c[s[i]]++;
    //对c数组进行++,所有元素初值都是0
    //看s数组里面数字,对应c数组下标出现了几次
    //c[1] 44
    //c[2] 33
    //c[3] 33
    //c[4] 22
    for (i = 1; i < 5; i++)//打印c数组的结果
        printf("%d", c[i]);
    printf("\n");
}

最后的for打印c数组是从下标1开始的,跳过了没有进行++的c[0]