请用c语言程序实现以下功能:将 N 个国家名按照字母顺序排列后输出
时间: 2024-04-29 12:26:44 浏览: 18
以下是使用C语言实现将N个国家名按照字母顺序排列后输出的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 100
#define MAX_NAME_LENGTH 50
void sort(char names[][MAX_NAME_LENGTH], int n);
int main() {
int n;
char names[MAX_N][MAX_NAME_LENGTH];
printf("请输入国家的个数(不超过%d个):", MAX_N);
scanf("%d", &n);
printf("请输入%d个国家名:\n", n);
for (int i = 0; i < n; ++i) {
scanf("%s", names[i]);
}
sort(names, n);
printf("按字母顺序排列后的国家名为:\n");
for (int i = 0; i < n; ++i) {
printf("%s\n", names[i]);
}
return 0;
}
void sort(char names[][MAX_NAME_LENGTH], int n) {
for (int i = 0; i < n - 1; ++i) {
int min_index = i;
for (int j = i + 1; j < n; ++j) {
if (strcmp(names[j], names[min_index]) < 0) {
min_index = j;
}
}
if (min_index != i) {
char temp[MAX_NAME_LENGTH];
strcpy(temp, names[i]);
strcpy(names[i], names[min_index]);
strcpy(names[min_index], temp);
}
}
}
```
程序首先会要求用户输入国家的数量,然后输入每个国家的名称。接着,程序会调用 `sort` 函数对国家名称进行排序。排序完成后,程序将按照字母顺序排列后的国家名称输出到屏幕上。
排序函数 `sort` 使用选择排序算法,每次找到未排序部分中最小的元素,然后将其放到已排序部分的末尾。这个算法的时间复杂度是 O(n^2),在数据规模较小的情况下可以接受。如果需要处理大量数据,可以考虑使用更高效的排序算法(如快速排序、归并排序等)。