用C语言编写程序,利用二维字符数组,排序十个国家的名字,并输出最长和最短的国家名字
时间: 2024-12-27 08:31:46 浏览: 78
在C语言中,你可以使用嵌套循环遍历二维字符数组,并结合字符串长度比较函数如`strlen()`来进行排序。这里是一个简单的步骤:
1. 定义一个包含十个国家名字的二维字符数组,例如 `char countries[10][50]`。
2. 使用冒泡排序算法或其他字符串排序算法对数组按字典序进行升序排列,同时记录每个国家名字的长度,可以创建一个结构体 `struct Country` 包含名字和长度信息。
3. 分别存储当前找到的最长和最短国家名字的索引以及长度。
4. 排序完成后,通过索引访问原数组获取最长和最短的国家名字。
下面是一个简化的示例代码片段:
```c
#include <stdio.h>
#include <string.h>
// 结构体表示一个国家及其名称长度
typedef struct {
char name[50];
int length;
} Country;
// 比较两个国家名的长度
int compareCountries(const void* a, const void* b) {
return (*(Country*)a).length - (*(Country*)b).length;
}
int main() {
// 假设国家名字已填充到数组countries
char countries[][50] = {"中国", "美国", "加拿大", ..., "纳米比亚"};
Country sortedCountries[10];
// 记录最长和最短的国家名及索引
int maxLengthIndex = 0, minLengthIndex = 0;
for (int i = 0; i < 10; ++i) {
sortedCountries[i].name = countries[i];
sortedCountries[i].length = strlen(countries[i]);
if (sortedCountries[i].length > sortedCountries[maxLengthIndex].length) {
maxLengthIndex = i;
}
if (sortedCountries[i].length < sortedCountries[minLengthIndex].length || minLengthIndex == 0) {
minLengthIndex = i;
}
}
// 输出排序后的最长和最短国家名
printf("最长的国家名字是 '%s', 长度 %d\n", sortedCountries[maxLengthIndex].name, sortedCountries[maxLengthIndex].length);
printf("最短的国家名字是 '%s', 长度 %d\n", sortedCountries[minLengthIndex].name, sortedCountries[minLengthIndex].length);
return 0;
}
```
阅读全文
相关推荐


















