void search_flight() { // 查询航班信息 load_flights(); int choice; printf("1. 根据航班号查询航班信息\n"); printf("2. 根据起飞城市和目的城市查询航班信息\n"); printf("3. 根据航班号查询客户信息\n"); printf("请选择查询方式:"); scanf("%d", &choice); switch (choice) { case 1: // 根据航班号查询航班信息 char flight_no[10]; printf("请输入航班号:"); scanf("%s", flight_no); printf("\n查询结果:\n"); printf("航班号 起飞城市 目的城市 座位数 票价\n"); printf("-----------------------------------------------------------------\n"); int found = 0; for (int i = 0; i < num_flights; i++) { if (strcmp(flight_no, flights[i].flight_no) == 0) { display_flight(flights[i]); found = 1; break; } } if (!found) { printf("没有找到该航班!\n"); } break; case 2: // 根据起飞城市和目的城市查询航班信息 char departure[20], destination[20]; printf("请输入起飞城市:"); scanf("%s", departure); printf("请输入目的城市:"); scanf("%s", destination); printf("\n查询结果:\n"); printf("航班号 起飞城市 目的城市 座位数 票价\n"); printf("-----------------------------------------------------------------\n"); for (int i = 0; i < num_flights; i++) { if (strcmp(departure, flights[i].departure) == 0 && strcmp(destination, flights[i].destination) == 0) { display_flight(flights[i]); } } break; case 3: // 根据航班号查询客户信息 printf("请输入航班号:"); scanf("%s", flight_no); for (int i = 0; i < num_customers; i++) { if (strcmp(flight_no, customers[i].flight_no) == 0) { display_customer(customers[i]); } } break; default: printf("无效的选择,请重新输入!\n"); break; } }184 14 C:\Users\86195\Desktop\未命名1.cpp [Error] jump to case label [-fpermissive]报错修改
时间: 2023-09-21 18:08:31 浏览: 43
这个错误的原因是在 switch 语句中出现了跳转到 case 标签的情况,这是不被允许的。
可能是在之前的代码中,有一个 break 或 return 语句被注释掉了,导致程序执行到了下一个 case 标签,而这个 case 标签中的代码又没有对应的 break 或 return 语句。
要解决这个问题,可以在对应的 case 语句中加上 break 语句,或者将多个 case 标签合并到一起。
相关问题
void search_flight() { // 查询航班信息 load_flights(); int choice; printf("1. 根据航班号查询航班信息\n"); printf("2. 根据起飞城市和目的城市查询航班信息\n"); printf("3. 根据航班号查询客户信息\n"); printf("请选择查询方式:"); scanf("%d", &choice); switch (choice) { case 1: // 根据航班号查询航班信息 char flight_no[10]; printf("请输入航班号:"); scanf("%s", flight_no); printf("\n查询结果:\n"); printf("航班号 起飞城市 目的城市 座位数 票价\n"); printf("-----------------------------------------------------------------\n"); int found = 0; for (int i = 0; i < num_flights; i++) { if (strcmp(flight_no, flights[i].flight_no) == 0) { display_flight(flights[i]); found = 1; break; } } if (!found) { printf("没有找到该航班!\n"); } break; case 2: // 根据起飞城市和目的城市查询航班信息 char departure[20], destination[20]; printf("请输入起飞城市:"); scanf("%s", departure); printf("请输入目的城市:"); scanf("%s", destination); printf("\n查询结果:\n"); printf("航班号 起飞城市 目的城市 座位数 票价\n"); printf("-----------------------------------------------------------------\n"); for (int i = 0; i < num_flights; i++) { if (strcmp(departure, flights[i].departure) == 0 && strcmp(destination, flights[i].destination) == 0) { display_flight(flights[i]); } } break; case 3: // 根据航班号查询客户信息 printf("请输入航班号:"); scanf("%s", flight_no); for (int i = 0; i < num_customers; i++) { if (strcmp(flight_no, customers[i].flight_no) == 0) { display_customer(customers[i]); } } break; default: printf("无效的选择,请重新输入!\n"); break; } }查找错误
这段代码中可能存在的错误是:
1. load_flights()函数没有给出,可能会导致程序无法编译或运行。
2. 输入的航班号、起飞城市和目的城市没有进行越界检查,可能会导致缓冲区溢出等问题。
3. 在查询客户信息的情况下,如果输入的航班号不存在,程序也没有给出相应的提示信息。
4. 在查询航班信息的情况下,如果存在多个符合条件的航班,程序只输出了第一个,可能会导致信息不全或不准确。
使用C#爬取https://flights.sda.cn/flight/search/tna-xmn-230717-1页面数据
你可以使用C#中的HttpClient类来发送HTTP请求并爬取网页数据。以下是一个示例代码,可以帮助你开始爬取https://flights.sda.cn/flight/search/tna-xmn-230717-1页面的数据:
```csharp
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
string url = "https://flights.sda.cn/flight/search/tna-xmn-230717-1";
using (HttpClient client = new HttpClient())
{
// 发送GET请求并获取响应
HttpResponseMessage response = await client.GetAsync(url);
// 确保响应成功
response.EnsureSuccessStatusCode();
// 读取响应内容
string html = await response.Content.ReadAsStringAsync();
// 处理网页数据
// 这里可以使用一些HTML解析库(如HtmlAgilityPack)来解析和提取所需的数据
// 输出网页内容
Console.WriteLine(html);
}
}
}
```
请注意,这个示例只是发送HTTP GET请求并获取响应的基本示例,你可能需要使用HTML解析库来解析和提取所需的数据。你可以使用NuGet包管理器来安装HtmlAgilityPack库。
另外,请确保你遵守网站的使用条款和法律规定,以确保你的爬取行为是合法的。