
请高手帮我看看这个C语言程序:
main(){ints[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...
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]);
}
为什么输了结果不是1111,而是4332,有点想不通,请高手帮忙。 展开
{ 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]);
}
为什么输了结果不是1111,而是4332,有点想不通,请高手帮忙。 展开
展开全部
就是4332啊。
s[12]里的只是,相当c[5]的下标加一,这个你应该懂的。
当i=0;s[0]=1;c[s[0]]=c[1]
当i=1;s[1]=2;c[s[1]]=c[2]
当i=2;s[2]=3;c[s[2]]=c[3]
当i=3;s[3]=4;c[s[0]]=c[4]
当i=4;s[1]=4;c[s[4]]=c[4]
当i=5;s[5]=3;c[s[5]]=c[3]
.........................................
s[12]有几个1,c[1]就自加几次;
有几个2,c[2]就自加几次;
一次类推。
s[12]中有4个1,3个2,3个3,2个2
所以是4332
s[12]里的只是,相当c[5]的下标加一,这个你应该懂的。
当i=0;s[0]=1;c[s[0]]=c[1]
当i=1;s[1]=2;c[s[1]]=c[2]
当i=2;s[2]=3;c[s[2]]=c[3]
当i=3;s[3]=4;c[s[0]]=c[4]
当i=4;s[1]=4;c[s[4]]=c[4]
当i=5;s[5]=3;c[s[5]]=c[3]
.........................................
s[12]有几个1,c[1]就自加几次;
有几个2,c[2]就自加几次;
一次类推。
s[12]中有4个1,3个2,3个3,2个2
所以是4332
展开全部
i从0到12,
c[s[i]]++分别对应:
c[1,2,3,4,4,3,2,1,1,1,2,3]++
就是说c[1]加了4次1,c[2]加了3次1,c[3]加了3次1,c[4]加了2次1
所以是4332
c[s[i]]++分别对应:
c[1,2,3,4,4,3,2,1,1,1,2,3]++
就是说c[1]加了4次1,c[2]加了3次1,c[3]加了3次1,c[4]加了2次1
所以是4332
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
怎么会是1111
解释:你要懂c[s[i]]++;的意思,第一次,i=0,c[s[i]]++;为c[1]++;开始的值为0,++后为1,s[12]
中后面还有1,遇到s[i]=1,那么c[1]++,这样最后的值就是4了,其他的几个一样,自己分析
解释:你要懂c[s[i]]++;的意思,第一次,i=0,c[s[i]]++;为c[1]++;开始的值为0,++后为1,s[12]
中后面还有1,遇到s[i]=1,那么c[1]++,这样最后的值就是4了,其他的几个一样,自己分析
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询