从city.txt文件中读十个城市名字,要求: (1) 自定义一个排序函数sorted( ),在主程序中调用该自定义函数,对所读取的10个城市进行升序排序,并把结果输出在屏幕上。 (2) 用户输入一个城市的名字,如果city.txt文件中有这个城市名字,则显示“查到这个城市!”,否则显示“没有找到这个城市!”。
时间: 2024-03-18 07:42:43 浏览: 57
好的,我可以帮你解决这个问题。首先,我们需要读取city.txt文件中的城市名字,然后定义一个排序函数,最后实现用户输入城市名字的功能。
以下是实现代码:
```python
# 读取city.txt文件中的城市名字
with open("city.txt", "r") as f:
cities = [line.strip() for line in f.readlines()]
# 定义排序函数
def my_sort(cities):
return sorted(cities)
# 调用排序函数并输出结果
sorted_cities = my_sort(cities)
print("排序后的城市名字:")
print(sorted_cities)
# 实现用户输入城市名字的功能
input_city = input("请输入一个城市的名字:")
if input_city in cities:
print("查到这个城市!")
else:
print("没有找到这个城市!")
```
你可以将上述代码保存为一个.py文件,然后在命令行中运行该文件即可看到结果。注意,要在相同目录下创建一个名为city.txt的文件,并在其中写入一些城市名字,每个名字占一行。
相关问题
用c语言编写从city.txt文件中读十个城市名字,要求: 自定义一个排序函数sorted( ),在主程序中调用该自定义函数,对所读取的10个城市进行升序排序,并把结果输出在屏幕上。 用户输入一个城市的名字,如果city.txt文件中有这个城市名字,则显示“查到这个城市!”,否则显示“没有找到这个城市!”。
好的,我可以帮你解决这个问题。
首先,我们需要定义一个结构体来存储城市名字:
```c
typedef struct {
char name[50];
} City;
```
然后,我们可以定义一个函数来读取城市名字:
```c
void read_cities(City cities[], int n) {
FILE *fp = fopen("city.txt", "r");
if (fp == NULL) {
printf("Failed to open file!\n");
return;
}
for (int i = 0; i < n; i++) {
fscanf(fp, "%s", cities[i].name);
}
fclose(fp);
}
```
接着,我们可以定义一个排序函数,这里使用冒泡排序:
```c
void sorted(City cities[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (strcmp(cities[j].name, cities[j + 1].name) > 0) {
City tmp = cities[j];
cities[j] = cities[j + 1];
cities[j + 1] = tmp;
}
}
}
}
```
最后,我们可以编写主函数,调用上述函数:
```c
int main() {
City cities[10];
read_cities(cities, 10);
sorted(cities, 10);
printf("Sorted cities:\n");
for (int i = 0; i < 10; i++) {
printf("%s\n", cities[i].name);
}
printf("Please enter a city name: ");
char name[50];
scanf("%s", name);
int found = 0;
for (int i = 0; i < 10; i++) {
if (strcmp(cities[i].name, name) == 0) {
found = 1;
break;
}
}
if (found) {
printf("Found this city!\n");
} else {
printf("Cannot find this city!\n");
}
return 0;
}
```
这样,就可以实现你的需求了。
用c语言从city.txt文件中读十个城市名字,要求: (1) 自定义一个排序函数sorted( ),在主程序中调用该自定义函数,对所读取的10个城市进行升序排序,并把结果输出在屏幕上。 (2) 用户输入一个城市的名字,如果city.txt文件中有这个城市名字,则显示“查到这个城市!”,否则显示“没有找到这个城市!”。
好的,您的问题已经收到。针对您的问题,我先提供以下代码供您参考:
```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` 对这些城市名字进行升序排序,并将排序后的结果输出到屏幕上。接下来,程序会要求用户输入一个城市名字,然后在城市名字数组中查找是否有与用户输入相同的城市名字,如果有,则输出“查到这个城市!”,否则输出“没有找到这个城市!”。
阅读全文