编程c语言 任意输入五个国家的名字按从小到大排序
时间: 2023-10-10 08:12:57 浏览: 116
以下是一个简单的 C 代码示例,用于按照国家的面积大小进行排序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 比较函数,用于排序
int cmp(const void* a, const void* b, void* data) {
double* areas = (double*)data;
const char** countries = (const char**)data + 5;
int idx_a = -1, idx_b = -1;
for (int i = 0; i < 5; i++) {
if (strcmp(countries[i], *(const char**)a) == 0) {
idx_a = i;
}
if (strcmp(countries[i], *(const char**)b) == 0) {
idx_b = i;
}
}
return areas[idx_a] < areas[idx_b] ? -1 : 1;
}
int main() {
const char* countries[5];
double areas[5];
for (int i = 0; i < 5; i++) {
printf("请输入第 %d 个国家的名字:", i+1);
countries[i] = (char*)malloc(sizeof(char) * 20); // 假设国家名字不超过 20 个字符
scanf("%s", (char*)countries[i]);
printf("请输入第 %d 个国家的面积:", i+1);
scanf("%lf", &areas[i]);
}
// 排序
qsort((void*)countries, 5, sizeof(char*), cmp, (void*)areas);
// 输出排序结果
printf("按照面积从小到大排序结果:\n");
for (int i = 0; i < 5; i++) {
printf("%s\n", countries[i]);
}
// 释放内存
for (int i = 0; i < 5; i++) {
free((void*)countries[i]);
}
return 0;
}
```
运行程序后,按照提示输入五个国家的名字和面积,程序将按照面积从小到大的顺序输出国家的名字。
如果你想按照国家的人口数量进行排序,只需要将 `areas` 数组换成人口数量的数组,并修改比较函数即可。