用c语言从city.txt文件中读十个城市名字,要求: (1) 自定义一个排序函数sorted( ),在主程序中调用该自定义函数,对所读取的10个城市进行升序排序,并把结果输出在屏幕上。 (2) 用户输入一个城市的名字,如果city.txt文件中有这个城市名字,则显示“查到这个城市!”,否则显示“没有找到这个城市!”。
时间: 2024-03-18 12:42:42 浏览: 60
c语言排序问题全解,排序的方法有很多,我就在这里提供一些常用的吧!
好的,您的问题已经收到。针对您的问题,我先提供以下代码供您参考:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CITY_NAME_LEN 50
#define NUM_CITIES 10
// 自定义的排序函数sorted
void sorted(char cities[][MAX_CITY_NAME_LEN], int num_cities) {
int i, j;
char temp[MAX_CITY_NAME_LEN];
for (i = 0; i < num_cities; i++) {
for (j = i + 1; j < num_cities; j++) {
if (strcmp(cities[i], cities[j]) > 0) {
strcpy(temp, cities[i]);
strcpy(cities[i], cities[j]);
strcpy(cities[j], temp);
}
}
}
}
int main() {
FILE *fp;
char cities[NUM_CITIES][MAX_CITY_NAME_LEN], search_city[MAX_CITY_NAME_LEN];
int i, found = 0;
// 从文件中读取城市名字
fp = fopen("city.txt", "r");
if (fp == NULL) {
printf("无法打开文件!\n");
exit(1);
}
for (i = 0; i < NUM_CITIES; i++) {
fscanf(fp, "%s", cities[i]);
}
fclose(fp);
// 对城市名字进行排序并输出
sorted(cities, NUM_CITIES);
printf("排序后的城市名字为:\n");
for (i = 0; i < NUM_CITIES; i++) {
printf("%s\n", cities[i]);
}
// 查找用户输入的城市名字
printf("请输入要查找的城市名字:\n");
scanf("%s", search_city);
for (i = 0; i < NUM_CITIES; i++) {
if (strcmp(cities[i], search_city) == 0) {
found = 1;
break;
}
}
if (found) {
printf("查到这个城市!\n");
} else {
printf("没有找到这个城市!\n");
}
return 0;
}
```
这个程序会从 `city.txt` 文件中读取10个城市名字,然后调用自定义的排序函数 `sorted` 对这些城市名字进行升序排序,并将排序后的结果输出到屏幕上。接下来,程序会要求用户输入一个城市名字,然后在城市名字数组中查找是否有与用户输入相同的城市名字,如果有,则输出“查到这个城市!”,否则输出“没有找到这个城市!”。
阅读全文