文章

18

粉丝

0

获赞

3

访问

4.8k

头像
国名排序 题解:自用笔记(C语言不用库函数)
P1217 同济大学机试题
发布于2024年3月20日 15:46
阅读数 180

#include<stdio.h>
#include<stdlib.h>
typedef struct {
	char name[100];
}country;//用结构体的原因是结构体之间可以赋值

void swap(country* a, country* b){
	country temp = *a;
	*a = *b;
	*b = temp;
	}
void sort(country* arr, int len) {//采用选择排序
	int max;
	for (int i = 0; i < len - 1; i++) {
		max = i;
		for (int j = i + 1; j < len; j++) {
			int k = 0;
			while (arr[max].name[k] != '\0' || arr[j].name[k] != '\0') {
				if (arr[max].name[k] > arr[j].name[k]) {//ASCII码越小,字母排位越靠前
					max = j;
					break;
				}
				else if(arr[max].name[k] == arr[j].name[k])//相同比下一位
					k++;
				else
					break;
			}
		}
		swap(&arr[max], &arr[i]);
	}
}

int main() {
	int n;
	scanf("%d", &n);
	country* list = (country*)malloc(sizeof(country) * n);
	for (int i = 0; i < n; i++)
		scanf("%s", list[i].name);
	sort(list, n);
	for (int i = 0; i < n; i++)
		printf("%s\n", list[i].name);
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发