本文最后更新于 1625 天前,其中的信息可能已经有所发展或是发生改变。
编写程序,输入一个正整数n,接下来再输入n个整数,输出出现次数最多的那个数,如果有多个数出现的次数相同,则输出值最小的那个数。
此题强制使用一维数组,可巩固冒泡排序、数组元素求最大值和数组使用。
#include <stdio.h>
int main()
{
int arr[100];
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", &arr[i]);
int p_element[100] = { -1 };
int p_element_num[100] = { 0 };
int flag = 0;
//检查重复并写入(求出数组中不同的元素有哪些)
for (int i = 0, j; i < n; i++)
{
for (j = 0; j < flag; j++)
if (arr[i] == p_element[j])
break;
if (j == flag)
{
p_element[flag] = arr[i];
flag++;
}
}
//检查重复并写入结束
for (int i = 0, j; i < n; i++)
{
for (int j = 0; j < flag; j++)
{
if (p_element[j] == arr[i])
p_element_num[j]++;
}
}
//调试输出专用
//for (int i = 0; i < flag; i++)
// printf("%d ", p_element[i]);
//printf("\n");
//for (int i = 0; i < flag; i++)
// printf("%d ", p_element_num[i]);
for(int i = 0;i<flag-1;i++)
for(int j = 0;j<flag-i-1;j++)
if (p_element[j] > p_element[j + 1])
{
int t1 = p_element[j];
int t2 = p_element_num[j];
p_element[j] = p_element[j + 1];
p_element_num[j] = p_element_num[j + 1];
p_element[j + 1] = t1;
p_element_num[j + 1] = t2;
}
int max = p_element_num[0];
int max_footer = 0;
for(int i = 0;i<flag;i++)
if (p_element_num[i] > max)
{
max = p_element_num[i];
max_footer = i;
}
printf("%d", p_element[max_footer]);
return 0;
}