用c语言实现nStrat = SearchCitiesSerialNumber(Temp, pCity, pCitiesFile);中的SearchCitiesSerialNumber函数
时间: 2023-06-19 12:08:50 浏览: 75
以下是一个简单的用 C 语言实现的 SearchCitiesSerialNumber 函数的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CITY_NAME_LEN 50
#define MAX_CITY_NUM 1000
typedef struct {
int serial_number;
char name[MAX_CITY_NAME_LEN + 1];
} City;
/**
* 在 cities_file 文件中查找名为 city_name 的城市,并返回其序号。
* 如果找到了多个同名城市,则返回序号最小的那个城市的序号。
* 如果未找到,则返回 -1。
*/
int SearchCitiesSerialNumber(const char *city_name, const City *cities, int city_num)
{
for (int i = 0; i < city_num; i++) {
if (strcmp(city_name, cities[i].name) == 0) {
return cities[i].serial_number;
}
}
return -1;
}
int main()
{
City cities[MAX_CITY_NUM] = {
{ 1, "New York" },
{ 2, "Los Angeles" },
{ 3, "Chicago" },
{ 4, "Houston" },
{ 5, "Philadelphia" },
{ 6, "Phoenix" },
{ 7, "San Antonio" },
{ 8, "San Diego" },
{ 9, "Dallas" },
{ 10, "San Jose" },
};
int city_num = 10;
const char *city_name = "Houston";
int serial_number = SearchCitiesSerialNumber(city_name, cities, city_num);
if (serial_number == -1) {
printf("City %s not found.\n", city_name);
} else {
printf("The serial number of city %s is %d.\n", city_name, serial_number);
}
return 0;
}
```
这个函数接受三个参数:
- `city_name`:要查找的城市名字。
- `cities`:一个城市结构体数组,每个结构体包含城市的序号和名字。
- `city_num`:城市结构体数组的长度。
函数遍历整个城市结构体数组,查找名字为 `city_name` 的城市。如果找到了一个匹配项,则返回这个城市的序号;如果没有找到匹配项,则返回 -1。如果有多个同名城市,函数将返回序号最小的那个城市的序号。
在上面的示例程序中,我们定义了一个包含 10 个城市的城市结构体数组,并使用 `SearchCitiesSerialNumber` 函数来查询其中一个城市的序号。输出结果应该是 "The serial number of city Houston is 4."。
阅读全文