解题思路:
注意事项:scanf("%d\n",&n);只有这样写是对的,如果写成scanf("%d",&n);getchar();//用getchar读取换行符是错的,不知道为什么,希望有大神指导
参考代码:
#include<stdio.h>
#include<string.h>
void sorting(char str1[][20],int n)
{
int i,j,k;
char t[20];
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(strcmp(str1[j],str1[j+1])>0)
{
strcpy(t,str1[j]);
strcpy(str1[j],str1[j+1]);
strcpy(str1[j+1],t);
}
}
}
}
//字母升序
int main()
{
int n;
scanf("%d\n",&n);//scanf输出时加上 \n ,就可以把缓冲区的\n,提前读走
int i,a[1000]={0};
char str[1000][20];
for(i=0;i<n;i++)
{
gets(str[i]);
}
sorting(str,n);//先排序再统计
int j,k,max=-1;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(str[i],str[j])==0)
{
a[i]++;//数量的下标与颜色的下标相同
for(k=j;k<n-1;k++)
{
strcpy(str[k],str[k+1]);//删除记录过的
}
j--;
n--;
}
}
if(a[i]>max)
{
max=a[i];
}
}
for(i=0;i<n;i++)
{
if(a[i]==max)//如果最大的相同
{
printf("%s\n",str[i]);
}
}
return 0;
}
0.0分
0 人评分