文章
13
粉丝
499
获赞
21
访问
135.5k
第一次错误的地方:1.在循环中使用gets和puts容易出现问题,不知道为什么。2.结构体变量可以直接赋值,不需要定义成结构体数组,否则会出错。3.冒泡排序法,最内层循环为n-i-1.-1总忘记,。
我看其它答案,有人用strcmp,不失为一种好的想法,我是自己手写了。。。。
#include<stdio.h>
#include<string.h>
typedef struct stu{
char name[20];
}country;
int compare(char* s1,char* s2)
{
int i=0;
int b = (strlen(s1) > strlen(s2))? strlen(s1):strlen(s2);
for(i=0;i<b;i++)
{
if(s1[i]==s2[i])
continue;
else
{
if(s1[i]>s2[i])
return 1;
else
return 0;
}
}
}
int main()
{
int n;
int j;
int k,l;
country str[102];
country ans;
scanf("%d",&n);
for(j=0;j<n;j++)
{
scanf("%s",str[j].name);
}
for(k=0;k<n;k++)
for(l=0;l<n-k-1;l++)
{
if(compare(str[l].name,str[l+1].name))
{
ans= str[l];
str[l] = str[l+1];
str[l+1] = ans;
}
}
for(j = 0;j<n;j++)
printf("%s\n",str[j].name);
return 0;
}
登录后发布评论
暂无评论,来抢沙发