作业-数组计数法

文章讲述了如何通过编程解决两个问题:一是统计50个0-19之间的数字中某个数字出现的最大次数,二是给定n个1-10的整数,计算每个数的出现次数并按顺序输出。展示了C++代码实现这两个计数问题的方法。
摘要由CSDN通过智能技术生成

目录

数字出现次数

题目描述

输入

输出

输入复制

输出复制

求n个数中每个数出现的次数

题目描述

输入

输出

输入复制

输出复制

声音识别

题目描述

输入

输出

输入复制

输出复制

选班委

题目描述

输入

输出

输入复制

输出复制

数字出现次数

题目描述

输入

输出

输入复制

输出复制



数字出现次数

题目描述

有50 个数(0∼19),求这50个数中相同数字出现的最多次数为几次?

输入

50 个数字。

输出

1 个数字(即相同数字出现的最多次数)。

输入复制

1 10 2 0 15 8 12 7 0 3 15 0 15 18 16 7 17 9 1 19 16 12 17 12 4 3 11 1 14 2 11 14 6 11 4 6 4 11 13 18 7 0 3 2 3 18 19 2 16

输出复制

4

#include <iostream>
using namespace std;
int cnt[19];
int main()
{
	int n = 50;
	for(int i = 0;i<n;i++)
	{
		int a;
		cin>>a;
		cnt[a]++;
	}
	int f;
	for(int i = 0;i<30;i++)
	{
		if(cnt[i]<cnt[i+1])
		{
			f = cnt[i+1];
		}
	}
	cout<<f;
	return 0;
}

求n个数中每个数出现的次数

题目描述

从键盘读入n 个整数(n≤100),这n 个数都是1 ~ 10 之间的数,请从小到大输出每个出现过的数,以及统计出每个数出现的次数?比如:假设读入5 个数,分别为1 2 3 3 5 ,统计结果如下:1 出现1 次,2 出现1 次,3 出现2 次,5 出现1 次。

输入

第1 行输入一个整数n 。

第2 行输入n 个整数,用空格隔开。

输出

输出若干行,每行2 个数,用空格隔开,按照从小到大的顺序,输出每个数以及每个数出现的次数。

输入复制

5

1 2 3 3 5

输出复制

1 1

2 1

3 2

5 1

#include <iostream>
using namespace std;
int cnt[10];
int main()
{
	int n;
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		int a;
		cin>>a;
		cnt[a]++;
	}
	for(int i = 0;i<10;i++)
	{
		if(cnt[i]>0)
		{
			cout<<i<<" "<<cnt[i]<<endl;
		}
	}
	return 0;
}

声音识别

题目描述

学校王老师研发了一套新的声音识别系统,该系统预先将每位同学的学号和声音录入之后,只要同学一说话,就知道是哪个学号的同学在说话(不同的同学声音是完全不一样的)王老师将系统装在了教室,系统收集到了一节英语课中同学们说话的n 个片段,并转换为了同学们的学号,请你编程帮助王老师计算出,有多少个同学在英语课中发过言,并按照学号由小到大,输出每位同学的学号及该学号的同学发言的次数。比如,假设经过系统分析,得到如下的88 个同学的学号分别是:8 1 6 1 8 6 7 2,表示同学们的发言顺序分别是:8 号、1 号、6 号、1 号、8 号、6 号、7 号、2 号,那么一共有5位同学发过言,按照学号由小到大输出发言次数如下:

 分别代表1号同学发言2次、2 号同学发言1 次、6 号同学发言2次、7 号同学发言1 次、8 号同学发言2 次。

输入

输入有2 行,第1 行有一个整数n(3≤n≤10000);第二行有n 个数字(这些整数都是1~100 之间的整数,含1 和100),数字之间用空格隔开,代表同学们的学号。

输出

第11 行输出11 个整数,代表总共有多少名同学发过;接下来输出若干行,每行2 个整数,用空格隔开,表示按照学号由小到大输出发言同学的学号及每位同学发言的次数。

输入复制

8

8 1 6 1 8 6 7 2

输出复制

5

1 2

2 1

6 2

7 1

8 2

#include <iostream>
using namespace std;
int cnt[88];
int main()
{
	int n;
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		int a;
		cin>>a;
		cnt[a]++;
	}
	int f = 0;
	for(int i = 0;i<88;i++)
	{
		if(cnt[i]>0)
		{
			f++;
		}
		cout<<f<<endl;
		if(cnt[i]>0)
		{
			cout<<i<<" "<<cnt[i]<<endl;	
		}
	}
	return 0;
}


选班委

题目描述

小T 和他的小伙伴们到CZ 中学的创新实验班报到后的第一件事就是选班委,班主任R 老师走上讲台宣布了选举办法,首先让全班40 位同学依次上讲台做自我介绍,然后按照职位一个一个依次进行选举,先选班长,再选学习委员......,选举办法是每人投一票,谁的票数最高就选谁担任这个职位,最后围棋高手小W 颇具大将风范被选为班长,学神小Z 当选为学习委员那是众望所归,小S 则有天生一副好嗓子,不但歌唱得好,并且能将多种动物的叫声模仿得惟妙惟肖,因此当选为文体委员。小T 同学在本次选举中负责计票,他觉得手工计票太慢了,且容易出错,因此想请你编一个程序实现机器计票功能。这个程序要能实现以下功能:全班共有n 个同学,依次用1 到n 编号,共有m 个人(包括班主任和任课老师等)参与了投票,每张选票上写有一个同学的编号,得票最多的同学当选。

输入

输入数据第一行包含两个用空格隔开的正整数n 和m,其中n≤200,m≤2000。

第二行有m 个用空格隔开的不超过n 的正整数,表示这m 张选票上所写的编号。

输出

输出得票最多的那个同学的编号。如果同时有两名以上同学得票最多,输出编号最小的那个同学的编号。

输入复制

3 4

1 3 2 1

输出复制

1

#include <iostream>
using namespace std;
int cnt[88];
int main()
{
	int n;
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		int a;
		cin>>a;
		cnt[a]++;
	}
	int f = 0;
	for(int i = 0;i<88;i++)
	{
		if(cnt[i]>0)
		{
			f++;
		}
		cout<<f<<endl;
		if(cnt[i]>0)
		{
			cout<<i<<" "<<cnt[i]<<endl;	
		}
	}
	return 0;
}

数字出现次数

题目描述

有50 个数(0∼19),求这50个数中相同数字出现的最多次数为几次?

输入

50 个数字。

输出

1 个数字(即相同数字出现的最多次数)。

输入复制

1 10 2 0 15 8 12 7 0 3 15 0 15 18 16 7 17 9 1 19 16 12 17 12 4 3 11 1 14 2 11 14 6 11 4 6 4 11 13 18 7 0 3 2 3 18 19 2 16

输出复制

4

​
#include <iostream>
using namespace std;
int cnt[19];
int main()
{
	int n = 50;
	for(int i = 0;i<n;i++)
	{
		int a;
		cin>>a;
		cnt[a]++;
	}
	int f;
	for(int i = 0;i<30;i++)
	{
		if(cnt[i]<cnt[i+1])
		{
			f = cnt[i+1];
		}
	}
	cout<<f;
	return 0;
}

​

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李余博睿(新疆)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值