解题思路:

1.每种颜色都对应有其票数,所以可定义一个颜色结构体:包含颜色单词和获得的投票数。在程序中输入颜色,然后与结构体数组(颜色表)中的颜色比较是否有相应的颜色,如果有,则投票数加1,如果没有,则把输入的颜色加到颜色表中,并设置投票数为1。 2.选出投票数最多的,然后存放到另一个数组中,再按颜色单词排序即可输出。


参考代码:

#include<bits/stdc++.h>
using namespace std;
typedef struct 
{
    char word[22];
    int count;
}Color;
int cmp(Color a,Color b)    //排序关键字 
{   
    return strcmp(a.word,b.word)<0;
}
int main()
{
    Color color[1005],maxcolor[1005];
	int n,i,j,max=1,m=0; 
	cin>>n;
	cin.ignore(100,'\n');     //忽略输入整数后面的数据 
	for(i=0;i<n;i++)
	{
		char temp[25];
		cin.getline(temp,24,'\n');     //输入颜色单词 
		for(j=0;j<m;j++)
		{
			if(strcmp(temp,color[j].word)==0) //颜色表中找到相应颜色,则投票数加1 
			{
				color[j].count++;   //票投数加1  
				if(max<color[j].count)  //求颜色出现最大投票数 
					max=color[j].count;
				break;
			} 
		}
		if(j==m)  //颜色表中没有找到 
		{
			strcpy(color[m].word,temp); //加到颜色表中 
			color[m].count=1;
			m++;    //颜色表中总的单词数加1 
		}		
	}
	for(i=j=0;i<m;i++)  //查找颜色表
	{
		if(color[i].count==max)  //查找投票数最多的颜色
		{
			maxcolor[j].count=max;     //加到最多投票颜色表数组mcolor中   
			strcpy(maxcolor[j].word,color[i].word);
			j++;
		}
	}
	sort(maxcolor,maxcolor+j,cmp);  //按颜色字典顺序排序  
	for(i=0;i<j;i++)
		cout<<maxcolor[i].word<<endl;	
    return 0;
}


点赞(1)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论