编一个C语言程序 input 输入第一行为一个n(n<=100),表示n个国家,第2行到第n+1行分别为n个国家的名字。 Output 输出n行,将n个国家按英文字典顺序排列。
时间: 2024-12-19 18:19:57 浏览: 8
在C语言中,你可以使用`qsort`函数来实现数组元素的排序,并结合动态内存分配处理输入的国家名字。下面是一个简单的示例程序,它会读取用户输入的国家名,存储在一个动态创建的字符串数组中,然后按照字典顺序进行排序并输出结果。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 用于比较字符串的辅助函数
int compare(const void *a, const void *b) {
return strcmp(*(const char **)a, *(const char **)b);
}
void sortCountries(char **countries, int n) {
qsort(countries, n, sizeof(char*), compare); // 使用qsort对字符串数组进行排序
}
int main() {
int n;
printf("请输入国家的数量(n <= 100):");
scanf("%d", &n);
if (n > 100) {
printf("错误:输入的国家数量超过限制。\n");
return 1;
}
char **country_names = (char **)malloc(n * sizeof(char *));
for (int i = 0; i < n; ++i) {
country_names[i] = (char *)malloc(sizeof(char) * 100); // 预留空间
printf("请输入第 %d 个国家的名字:", i + 1);
fgets(country_names[i], 100, stdin);
// 移除fgets产生的换行符
country_names[i][strlen(country_names[i]) - 1] = '\0';
}
sortCountries(country_names, n);
printf("按字典顺序排列后的国家列表:\n");
for (int i = 0; i < n; ++i) {
printf("%s\n", country_names[i]);
}
// 释放动态内存
for (int i = 0; i < n; ++i) {
free(country_names[i]);
}
free(country_names);
return 0;
}
```
当你运行这个程序时,它会提示你依次输入每个国家的名字,最后输出按字典顺序排列的结果。记得在结束时关闭文件流,以免数据丢失。
阅读全文