解题思路:
将输入的自然数作为数组的下标,每当出现相同的自然数时,该自然数对应的下标所对应的值就加一,最后每个下标所对应的值就是相同自然数出现的总次数
注意事项:
参考
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 人评分
C二级辅导-公约公倍 (C语言代码)浏览:2126 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:738 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:606 |
【明明的随机数】 (C语言代码)浏览:814 |
蚂蚁感冒 (C语言代码)浏览:1339 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:495 |
1128题解(返回值为数组的情况)浏览:482 |
矩形面积交 (C++代码)浏览:1140 |
数字游戏 (C++代码)浏览:1200 |
C语言训练-亲密数 (C语言描述,反正怎么都能对)浏览:2172 |