解题思路:
将输入的自然数作为数组的下标,每当出现相同的自然数时,该自然数对应的下标所对应的值就加一,最后每个下标所对应的值就是相同自然数出现的总次数
注意事项:
参考
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 人评分
简单的a+b (C语言代码)浏览:385 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:648 |
The 3n + 1 problem (C语言代码)浏览:550 |
Tom数 (C语言代码)浏览:598 |
10月月赛题解浏览:554 |
幸运数 (C++代码)浏览:2982 |
马拦过河卒 (C语言代码)浏览:1213 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:714 |
C语言程序设计教程(第三版)课后习题6.9 (C++代码)浏览:522 |
C语言训练-百钱百鸡问题 (C语言代码)浏览:684 |