求求大佬解答,数组输入10个正整数,统计重复数字的个数,并输出重复数字和重复次数
数组输入10个正整数,统计重复数字数字,并输出重复数字和重复次数,否则输出no
1, 60, 55, 60, 24, 88, 75, 60, 48, 55
输出结果为 60: 3, 55: 2
B: 假设输入数据如下
74, 92, 70, 71, 33, 28, 32, 22, 9, 11
输出结果为: NO
分析:
这个问题是对数据的分组,拿第一组数据为例,可以分组为
1: 1, 60: 3, 55: 2, 24: 1, 88: 1, 75: 1, 60: 1, 48: 1
然后根据分组结果,判断有没有重复数字。
程序代码:
#include <stdio.h> // 数在 nums 中时,返回下标,否则返回 -1 int data_in_nums(int num, int *array, int tail) { for (int i = 0; i < tail; i++) { if (num == array[i]) { return i; } } return -1; } int main() { int data[] = {1, 60, 55, 60, 24, 88, 75, 60, 48, 55}; // int data[] = {74, 92, 70, 71, 33, 28, 32, 22, 9, 11}; int nums[10] = {0}; int tail = 0; int counts[10] = {0}; for (int i = 0; i < 10; i++) { int j = data_in_nums(data[i], nums, tail); if (j != -1) { counts[j] += 1; // 已经存在的数,计数加一 } else { int k = tail; nums[k] = data[i]; // 不存在的数,存入 nums counts[k] = 1; // 计数置 1 ++tail; } } if (tail == 10) { puts("NO"); return 0; } for (int i = 0; i < tail; i++) { if (counts[i] > 1) { printf("%d: %d\n", nums[i], counts[i]); } } }