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]);
printf("\n")
}

求解释,详细点谢谢!!!
展开
 我来答
也许_没有_也许
2013-07-29 · 超过11用户采纳过TA的回答
知道答主
回答量:27
采纳率:0%
帮助的人:21.6万
展开全部
本题巧妙运用数组c中的元素来统计数组s中1234这4个数字出现的次数
程序运行完后,最终结果是4332,表示1出现了4次,2和3各出现了3次,4出现了2次
for(i=0;i<12;i++)
c[s[i]]++;
当i=0时,s[i]相当于s[0],取数字其实是1,相当于c[1]++,这样c数组中的第一个元素就自然从0变为1
同理,当i=2时,s[2]的内容是2,相当于c[2]++,这样c数组中的第二个元素就自然从0变为1,这时统计1和2两个数字各出现过1次了。
以此类推,i=3和i=4的时候,c[4]++已经执行过2次,表示数字4已出现过2次
再往下推下去,思路已经很明了,后面的代码也没太大难度。
本题的关键在于c[s[i]]++;这行代码,你顺到我说的思路,根据循环变量的增值,把数字都代进去,自然就会看明白
c[5]={0}是把c数组中所有的元素清0
outlook5320
2013-07-29 · TA获得超过881个赞
知道小有建树答主
回答量:2336
采纳率:0%
帮助的人:785万
展开全部
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[s[i]]就是先算s[i]的值,比如第一个i=0时,s[i]=1 再求c[1]=c[1]+1的值

for(i=1;i<5;i++)//其实c[0]=0

printf("%d",c[i]);

printf("\n") ;

}
追问
大神在上几个数行吗?在详细点c[1]=0 c[2]=0? 后面取几个数? 还有http://zhidao.baidu.com/question/574915309?quesup2&oldq=1
你看下 就那个fun(k,x)的问题,刚才跑步去了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yajuntiantian
2013-07-29 · TA获得超过483个赞
知道小有建树答主
回答量:666
采纳率:0%
帮助的人:152万
展开全部
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[s[i]]就是将s[i]的值当着数组c[5]的第几个数据值,然后再处理。比如第一个i=0时,s[i]=1 再求c[1]=c[1]+1的值;

for(i=1;i<5;i++)//其实c[0]=0,循环四次,将数组c[5]的数据从第二个数开始输出在显示器上!

printf("%d",c[i]);

printf("\n"); //最后输出一个换行符

}
追问
大神在上几个数行吗 c[2]=? c[3]=?
追答
第一个i=0时,s[i]=1 再求c[1]=c[1]+1的值;

第一个i=1时,s[i]=2 再求c[2]=c[2]+1的值;
第一个i=2时,s[i]=3 再求c[3]=c[3}+1的值;
第一个i=3时,s[i]=4 再求c[4]=c[4]+1的值;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式