第一次来如此高大上的地方写自己有关专业的博客,各位见笑。 = =
以上是这道题目的原文,翻译一下就是多组数据,输入颜色,输出出现频率最高(也就是出现次数最多)的颜色。
分析:
一开始多组数据的框架当然是很简单的,这道题唯一的难点就在于如何储存所谓的颜色出现次数吧。
既然是储存,那么数组当然是对我们来说最好的选择。用数组下标记录出现次数,用数组储存颜色。
代码如下:
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main(){
char a[1000][20]; //建立一个字符型二维数组
int t; // t 是颜色出现次数
int n,i,j,m,p; //n为组数,i j是循环计数数字,m是最大次数,p是位置
while(cin>>n&&n)
{
getchar(); //取消回车的影响 同样可以用scanf(“%d\n”,&n);(在while后的括号中即可)
for(i=0;i<n;i++)
{
gets(a[i]);
}
m=1; //记录初始次数
p=0; //记录颜色的单词出现在数组中的位置
for(i=0;i<n;i++)
{
t=1;
if(a[i][0]=='\0') continue;
for(j=i+1;j<n;j++)
{
if(a[j][0]=='\0') continue;
if(strcmp(a[i],a[j])==0) //与下一个颜色比较 若相同,t++
{
t++;
a[j][0]='\0'; //将该字符变为\0,继续循环
}
}
if(t>m) //比较出现次数
{
m=t;
p=i;
}
}
puts(a[p]);
}
return 0;
}