从键盘输入五个城市名字,运用字符指针数组对一组城市名进行升序排列,并将结果输出
时间: 2024-02-24 14:58:46 浏览: 76
好的,下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_CITY_NUM 5
#define MAX_CITY_NAME_LEN 20
void sort_cities(char *cities[], int num);
int main() {
char cities[MAX_CITY_NUM][MAX_CITY_NAME_LEN];
char *city_ptrs[MAX_CITY_NUM];
// 从键盘输入城市名
printf("请输入 %d 个城市名:\n", MAX_CITY_NUM);
for (int i = 0; i < MAX_CITY_NUM; i++) {
scanf("%s", cities[i]);
city_ptrs[i] = cities[i];
}
// 对城市名进行升序排序
sort_cities(city_ptrs, MAX_CITY_NUM);
// 输出排序结果
printf("城市名升序排序结果:\n");
for (int i = 0; i < MAX_CITY_NUM; i++) {
printf("%s\n", city_ptrs[i]);
}
return 0;
}
void sort_cities(char *cities[], int num) {
char *temp;
for (int i = 0; i < num - 1; i++) {
for (int j = i + 1; j < num; j++) {
if (strcmp(cities[i], cities[j]) > 0) {
temp = cities[i];
cities[i] = cities[j];
cities[j] = temp;
}
}
}
}
```
程序中使用了字符指针数组来存储城市名,通过输入城市名后将其指针存储到指针数组中,然后调用 `sort_cities` 函数对指针数组进行排序,最后输出排序结果。
需要注意的是,由于输入的城市名长度不确定,因此需要定义一个合适的最大长度,避免输入的城市名超出数组范围。此外,在使用 `strcmp` 函数比较城市名大小时,需要使用 `strcmp(cities[i], cities[j]) > 0` 的形式,因为 `strcmp` 函数返回值为 0 时表示两个字符串相等,而不是相等时返回 1。
阅读全文