问题描述:
这里有各种各样的气球,气球的颜色不限,各种颜色的气球数量不限,请求解出最多数量的气球颜色。(可多解)
提示:
输入形式:多样例输入。每个样例先输入一共有n(n<=100)个气球,再逐个输入现有的气球的颜色,规定输入的颜色不能超过9个字符。
输出形式:输出当前样例下最多数量的气球颜色。输出的最多数量的颜色不超过10种。
格式为:输出结果为:(结果分行)
#include<stdio.h>
#include<string.h>
struct balloons
{
char color[10];
int number;
}Balloon[100];
int main(void)
{
int n;
while(scanf("%d", &n) != EOF && n != 0)
{
for(int m = 0; m < n; m++)//初始化每种颜色的数量
Balloon[m].number = 0;
for(int i = 0; i < n; i++)//读入字符串
scanf("%s", Balloon[i].color);
for(int k = 0; k < n; k++)//统计颜色数量
{
for(int p = 0; p < n; p++)
{
if(strcmp(Balloon[k].color, Balloon[p].color) == 0)
Balloon[k].number++;
}
}
int M[10] = {0};
int max = 0;
int h = 0;
for(int j = 0; j < n; j++)//找出最多数量的颜色
{
if(max <= Balloon[j].number)//要等于号
{
max = Balloon[j].number;
M[h++] = j;
}
}
printf("输出结果为\n%s\n", Balloon[M[0]].color);
int ok = 0;
for(int i = 1; i < h; i++)
{
for(int j = 0; j < i; j++)
{
if(strcmp(Balloon[M[i]].color, Balloon[M[j]].color) == 0)
break;
else if(strcmp(Balloon[M[i]].color, Balloon[M[j]].color) != 0)
{
if(j == i - 1)
printf("%s\n" , Balloon[M[i]].color);
}
}
}
printf("\n");
}
return 0;
}
这里是测试示例: