【c++统计数字】新人的题解与感想

本文介绍了一个简单的C++程序,用于统计一组自然数中每个数字出现的频次,并按从小到大的顺序输出每个数字及其对应的出现次数。

感谢学长给我提供的统计思路,希望能帮上各位

我真的觉得我已经写的很清楚易懂了
如果哪里看不懂再问我就行啦

#include<iostream>
#include<algorithm>
using namespace std;
int times[200005]={0},na[200005];//次数,Natural number,记得数组按题目要求开大一点 
int main()
{
	int n;//自然数的个数
	cin>>n;
	for(int i=0;i<n;i++)//循环读入数字 
	{
		cin>>na[i]; 
	}
	sort(na,na+n);//排序(注意:比如刚开始读入时是na[2]=100,这里表示100是第三个被读入的数,但排序后假如100是第5小的数,则排序后na[4]=100,下标会改变的) 
	int i=0,j=1;//i是这个数刚开始出现的位置,j是它出现的末位置 
	while(i<n)//开始统计个数 
	{
		times[i]++;//首先统计自己,每个数一开始都是出现了1次的 
		while(na[i]==na[j])//当首位置的数与末位置的相等时,执行本循环 
		{
			j++;//末位置往后推 
			times[i]++;//这个数又出现了一次 
		}
		cout<<na[i]<<" "<<times[i]<<endl;//从小到大输出每个数出现的次数 
		i=j;j=i+1;//把新的首位置赋值为上一个数的末位置,末位置一开始都是首位置+1 
	}
	return 0;//完结撒花 
}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值