本帖最后由 超神级 于 2014-2-24 07:39 编辑
不错回头再看!...
//修正:把程序一些错误修改。磊哥太大意了!程序没自己测试下...
//为了体谅些新人把不易理解的地方添加了一些注释。
#include <stdio.h>
int main()
{
int a[11],i,j,t;
for(i=0;i<=10;i++)
{
a=0; //初始化为0
}
for(i=1;i<=5;i++) //循环读入5个数
{
scanf("%d",&t); //把每一个数读到变量t中
a[t]++; //进行计数,
//用户输入的值是数组下标如果你输入1吧a[1]里面的值依然是0,
} //a[1]++;就是把吧a[1]里面的值加1,用一句话把这代码用处概况就是
//把当前数组里面储存的值加1;
for(i=0;i<=10;i++) //依次判断a[0]~a[10]。;
for(j=1;j<=a;j++) //出现了几次就打印几次
printf("%d ",i);//先把此处再次理解a[t]++;
//详细分析下:为什么能实现排序呢。
//为什么需要11个数组呢!因为他只可以对10一下排序再大了就没对应的数组下标了!
//重点来了!把数组从大到小遍历for(i=0;i<=10;i++)
//for(j=1;j<=a;j++) 因为a的值是跟据输入的(参考a[t]++;)可能是1可能是2
//这句话是判断里面的a的值是几!把当前数组下标i输出几次!
getchar();getchar();
//这里的getchar();用来暂停程序,以便查看程序输出的内容
//也可以用system("pause");等来代替
return 0;
}
//输入数据为
//23558
|