void BookFlightTicket(Flight* p, Person* person, Person* person_noticket) { int i = -1; FlightDateShow(p); printf("请选择你要预定的航班编号:"); scanf("%d", &i); if ((p + i)->MaxTicketNum == (p + i)->buyTicketNum) { printf("对不起,该航班机票已售完!\n"); printf("请输入您的姓名(我们将把您添加进候补名单):"); scanf("%s", (person_noticket+_personnoticketsizeNumber)->person_name); (person_noticket + _personnoticketsizeNumber)->AirFlight_Num = i; _personnoticketsizeNumber++; printf("添加候补名单成功!\n\n"); return; } else { if (passengerSizeNumber > PERSON_MAXNUM) { printf("存储容量不足!\n"); return; } printf("请输入姓名:"); scanf("%s", (person + passengerSizeNumber)->person_name); printf("请输入日期:"); scanf("%s",(person + passengerSizeNumber)->date); printf("请输入你的身份证号:"); scanf("%s",(person + passengerSizeNumber)->person_id); (person + passengerSizeNumber)->AirFlight_Num = i; passengerSizeNumber++; (p + i)->buyTicketNum++; printf("订票成功!\n"); }
时间: 2024-01-28 18:03:20 浏览: 17
这段代码是一个函数 BookFlightTicket,其作用是预定航班机票。函数接受三个参数:指向 Flight 结构体的指针 p,指向 Person 结构体的指针 person,指向 Person 结构体的指针 person_noticket。函数首先显示航班日期信息,要求用户输入要预定的航班编号。如果该航班机票已售完,则要求用户输入姓名并将用户添加到候补名单中。如果存储容量不足,则提示存储容量不足。如果还有机票,要求用户输入姓名、日期和身份证号,并将用户添加到已预定名单中。最后,更新该航班的已售机票数量,显示订票成功的信息。
相关问题
void print_person_array(Person* persons, int n) { 是不是应该是 persons[]
`void print_person_array(Person* persons, int n)` 是 C 语言中的函数声明,其中 `persons` 是一个指向 `Person` 类型的指针,表示结构体数组的起始地址。在 C 语言中,数组也可以用指针来表示,因此我们可以使用 `Person* persons` 来声明函数参数。
在函数定义中,我们可以使用 `persons[]` 来表示数组参数,这与 `persons*` 是等价的。因为在函数中,数组参数会自动转换为指针类型,所以 `persons[]` 和 `persons*` 都可以正确地表示指向结构体数组的指针。
因此,`void print_person_array(Person* persons, int n)` 是一种常见的 C 语言函数声明方式,它可以正确地表示指向结构体数组的指针。
int a = 10; char *p = NULL: p = &a; printf(p);输出是什么
这段代码会出现编译警告,因为 printf 函数中使用了 char * 类型的指针 p,但是传入的参数是 int 类型的变量 a 的地址,这会导致类型不匹配。
即使忽略编译警告,程序也会出现运行时错误,因为 printf 函数在执行时会按照字符类型解析传入的参数,但是传入的参数是一个整型变量的地址,因此会导致输出结果不确定,甚至会导致程序崩溃。
因此,这段代码的输出结果是不确定的,应该避免这种类型不匹配的操作。如果想要输出变量 a 的值,应该使用以下代码:
```
int a = 10;
printf("变量 a 的值为:%d\n", a);
```
或者使用以下代码将变量 a 的地址强制转换为 void* 类型指针,然后输出该指针的值(注意不要使用 %s 或者 %c 格式化字符):
```
int a = 10;
void *p = (void *)&a;
printf("变量 a 的地址为:%p\n", p);
```