输入10个数,找出出现次数最多的数 (如果多个并列,则按数字出现顺序分别输出)
比如:
输入:1 2 2 3 4 5 6 7 8 9
输出:2
算法:
(1) 利用双层循环, 每一个元素都与后面一个元素比较, 如果两者相同, 则该元素次数+1,
(2) 以上的算法中两个相同的元素的次数是一样的, 优化如下, 比较两个元素的时候, 如果两者相等, 则该元素次数+1, 后面的元素次数设置为0, 比较的时候再判断这个元素是否已经比较
#include <stdio.h>
int main(int argc,const char *argv[])
{
int a[10];
int count[10];
for (int i=0; i<10; i++) {
scanf("%d", &a[i]);
count[i]=1;
}
for (int i=0; i<10; i++) {
if (count[i]) {
for (int j=i+1; j<10; j++) {
if (a[j]==a[i]) {
count[i]++;
count[j]=0;
}
}
}
}
// for (int i=0; i<10; i++) {
// printf("%d ", count[i]);
// }
//找最大值
int max = count[0];
for (int i=0; i<10; i++) {
if (max<count[i]) {
max=count[i];
}
}
//查找cnt最大值对应的数
for (int i=0; i<10; i++) {
if (max==count[i]) {
printf("%d ", a[i]);
}
}
printf("\n");
return 0;
}
这段C语言代码用于输入10个整数,并找出出现次数最多的数字。当存在多个数字出现次数相同时,按数字顺序依次输出。程序使用两层循环进行比较,并通过计数数组记录每个数字出现的次数,最后找出出现次数最多的数字并打印。
806





