解题思路:
1.由题可知,需要统计数字出现的次数,可以想到利用数组下标计数的功能,即a[x]++,但是,这里只给了n的大小,并没有说明里面的数字可能有多大,n最大为10000,表示有10000个数,但是这10000个数中可能有超过10000的数字,所以利用数组下标计数就可能会漏掉
2.那么就利用常规方法,先创建循环将n个数输入到数组中,然后找到最大值max
3.接下来要求0-max中的数字各自出现了几次,那么先建立了一个外循环for(0-max),然后内嵌一个循环for(1-n),外循环意思是统计哪个数字,内循环为统计这个数出现的次数,执行完内循环,然后输出sum即可
4.需要特别注意的是sum的初始化的位置,首先我们直到sum应该初始化为0,但是他统计的是每一个数字出现的次数,所以在统计每一个数字之前,都应该为0,可以得出,sum=0应该放在外循环的里面,内循环的外面,每次求出一个sum,然后输出sum,继续求下一个数字的次数
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,max=0;
cin>>n;
int a[n+5]={0};//定义一维数组存放数据
for(int i=1;i<=n;i++)
cin>>a[i];//将数据存入到数组中
for(int i=1;i<=n;i++)
{
if(a[i]>max)//找到最大值
max=a[i];
}
for(int i=0;i<=max;i++)//枚举0-最大值,分别统计数量
{
int sum=0;//每次求数量之前,都要清零
for(int j=1;j<=n;j++)//如果此时的数和数组中的数相等
{
if(i==a[j])
sum++;//累加器增加
}
cout<<sum<<endl;//输出该数的个数
}
return 0;
}