c语言reserve函数
时间: 2023-06-09 09:02:18 浏览: 134
对于C语言中的字符串,reserve函数可以用来反转字符串。它的函数原型为:
```c
void reverse(char *str, int len);
```
其中,str是需要反转的字符串,len是字符串的长度。该函数会将字符串反转,最后得到的字符串将会被保存在str中。
相关问题
C语言设计一个实现预约座位的函数
以下是一个简单的实现预约座位的函数的示例:
```c
#include <stdio.h>
// 定义座位数量
#define SEATS 10
// 定义座位状态
#define AVAILABLE 0
#define RESERVED 1
// 定义座位数组
int seatStatus[SEATS];
// 函数声明
void printSeatStatus();
int reserveSeat(int seatNumber);
int main() {
int seatNumber, result;
char choice;
// 初始化座位状态
for (int i = 0; i < SEATS; i++) {
seatStatus[i] = AVAILABLE;
}
do {
// 打印座位状态
printf("\nCurrent seat status:\n");
printSeatStatus();
// 询问座位号
printf("\nEnter seat number to reserve: ");
scanf("%d", &seatNumber);
// 预约座位
result = reserveSeat(seatNumber);
// 根据结果输出提示信息
if (result == -1) {
printf("Invalid seat number. Please try again.\n");
} else if (result == 0) {
printf("Sorry, seat %d has already been reserved. Please choose another seat.\n", seatNumber);
} else {
printf("Seat %d has been reserved successfully.\n", seatNumber);
}
// 询问是否继续预约
printf("\nDo you want to reserve another seat? (y/n): ");
scanf(" %c", &choice);
} while (choice == 'y' || choice == 'Y');
return 0;
}
// 打印座位状态
void printSeatStatus() {
for (int i = 0; i < SEATS; i++) {
printf("%d ", seatStatus[i]);
}
printf("\n");
}
// 预约座位
int reserveSeat(int seatNumber) {
// 检查座位号是否有效
if (seatNumber < 1 || seatNumber > SEATS) {
return -1;
}
// 检查座位是否已被预约
if (seatStatus[seatNumber - 1] == RESERVED) {
return 0;
}
// 预约座位
seatStatus[seatNumber - 1] = RESERVED;
return 1;
}
```
在这个示例中,我们首先定义了座位数量和座位状态的常量,并声明了打印座位状态和预约座位的函数。
在 `main()` 函数中,我们首先初始化座位状态数组,然后进入一个循环,每次循环中打印当前的座位状态,询问用户要预约哪个座位,调用预约座位的函数进行预约,并根据预约结果输出相应的提示信息。在循环结束前,我们还会询问用户是否继续预约。
在 `printSeatStatus()` 函数中,我们简单地遍历座位状态数组并打印每个元素的值。
在 `reserveSeat()` 函数中,我们首先检查座位号是否有效,如果无效则返回 `-1`。然后检查座位是否已被预约,如果已被预约则返回 `0`。最后,如果座位可用,则将座位状态设置为已预约,并返回 `1`。
请注意,这个示例是一个简单的实现,实际应用中可能需要更多的功能,例如取消预约、查询座位状态等。
图书馆占座系统c语言程序
以下是一个简单的图书馆占座系统的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define NUM_SEATS 10
typedef struct {
int id;
char name[MAX_NAME_LEN];
int reserved;
} Seat;
void print_seats(Seat seats[]) {
printf("Current seat reservations:\n");
for (int i = 0; i < NUM_SEATS; i++) {
if (seats[i].reserved == 0) {
printf("Seat %d: vacant\n", seats[i].id);
} else {
printf("Seat %d: reserved by %s\n", seats[i].id, seats[i].name);
}
}
}
int main() {
Seat seats[NUM_SEATS];
char input[MAX_NAME_LEN];
int seat_num;
int num_reserved = 0;
// initialize seats
for (int i = 0; i < NUM_SEATS; i++) {
seats[i].id = i+1;
seats[i].reserved = 0;
}
// main loop
while (1) {
print_seats(seats);
printf("Enter your name to reserve a seat (or 'quit' to exit): ");
fgets(input, MAX_NAME_LEN, stdin);
if (strcmp(input, "quit\n") == 0) {
break;
}
input[strlen(input)-1] = '\0'; // remove newline character
printf("Enter seat number to reserve (1-%d): ", NUM_SEATS);
scanf("%d", &seat_num);
getchar(); // consume newline character
// check if seat is already reserved
if (seats[seat_num-1].reserved == 1) {
printf("Sorry, seat %d is already reserved.\n", seat_num);
continue;
}
// reserve the seat
seats[seat_num-1].reserved = 1;
strcpy(seats[seat_num-1].name, input);
num_reserved++;
printf("Seat %d reserved by %s.\n", seat_num, input);
}
printf("Goodbye! %d seats reserved.\n", num_reserved);
return 0;
}
```
该程序使用了一个简单的结构体来表示座位,其中包含了座位编号、座位预约者的姓名和是否已经被预约。程序提供了一个 `print_seats()` 函数来打印当前的座位预约情况。在主循环中,程序会要求用户输入姓名和座位号来进行预约。程序会检查该座位是否已经被预约,如果是,则提示用户重新选择。如果该座位尚未被预约,则程序会将该座位的预约状态设置为已预约,并将预约者的姓名保存在座位数据结构中。程序会一直循环直到用户输入 `quit` 为止。最后程序会输出预约座位的数量,并退出程序。