Hzu挑战自我


私信TA

用户名:gxhzxyjsj

访问量:98836

签 名:

2024终究会过去,期待2025!

等  级
排  名 8
经  验 27865
参赛次数 67
文章发表 157
年  龄 0
在职情况 教师
学  校 贺州学院
专  业 软件工程

  自我简介:

弱鸡一个,继续努力!

解题思路:

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;
}


 

0.0分

0 人评分

  评论区

  • «
  • »