文章

13

粉丝

499

获赞

21

访问

135.5k

头像
【C】结构体可以直接赋值
P1217 同济大学机试题
发布于2020年4月11日 16:11
阅读数 10.8k

第一次错误的地方: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;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发