一一


私信TA

用户名:dotcpp0663990

访问量:361

签 名:

等  级
排  名 1021
经  验 3314
参赛次数 0
文章发表 5
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:
将输入的自然数作为数组的下标,每当出现相同的自然数时,该自然数对应的下标所对应的值就加一,最后每个下标所对应的值就是相同自然数出现的总次数
注意事项:

参考

max.sum < brr[i]  该行代码一定不能加等于号,否则最后输出的就是最大的自然数和其出现的次数

代码:

#include<stdio.h>
typedef struct max_num {		//定义一个结构体,用于记录结果,也可以不用结构体,直接用两个整型变量也行
	int m;
	int sum ;
}max_num;
int main() {
	int n;
	max_num max;
	int arr[50000] = { 0 };				//将两个数组元素全部初始化为0  arr[] 可以不初始化为0,但brr[]一定要初始化为0
	int brr[50000] = { 0 };                         //因为题目没说输入的自然数的范围,所以brr的长度一定要足够长
	scanf("%d", &n);
	for (int i = 0; i < n; i++) {
		scanf("%d", &arr[i]);			//输入n个自然数
	}
	for (int i = 0; i < n; i++) {
		brr[arr[i]]++;			//将输入的n个自然数分别作为brr[]的数组下标    例如arr[0]=1,brr[1]=0+1;arr[10]=1,brr[1]=1+1;
	}					//该循环完毕后,brr[]下标所对应的值就是同一个自然素的出现的次数;
	max.sum = arr[0];					//初始化max.sum和max.n;
	max.m = 0;
	for (int i = 0; i < n; i++) {	
		if (max.sum < brr[i])			//遍历整个brr[],当出现最大数有多个时,只会统计下标小的,即题目所要求的较小的自然数
			max.sum = brr[i], max.m = i;	//切记  max.sum < brr[i]  该比较语句不能加等于号,否则最后输出结果就是最大的
	}                                               //自然数和它出现的次数
	printf("%d\n%d", max.m, max.sum);
	return 0;
}


 

0.0分

0 人评分

  评论区

  • «
  • »