请高手帮我看看这个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,有点想不通,请高手帮忙。
展开
 我来答
jiayanlei9
2011-12-09 · TA获得超过123个赞
知道答主
回答量:172
采纳率:0%
帮助的人:110万
展开全部
就是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
青青墙外草
2011-12-09 · TA获得超过2211个赞
知道小有建树答主
回答量:777
采纳率:68%
帮助的人:526万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
myhz1988
2011-12-09 · TA获得超过3260个赞
知道小有建树答主
回答量:316
采纳率:100%
帮助的人:145万
展开全部
怎么会是1111
解释:你要懂c[s[i]]++;的意思,第一次,i=0,c[s[i]]++;为c[1]++;开始的值为0,++后为1,s[12]
中后面还有1,遇到s[i]=1,那么c[1]++,这样最后的值就是4了,其他的几个一样,自己分析
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式