用·c语言设计一个程序1.有一个两层的停车场, 每层有6个车位, 当第一层车停满后才允许使用第二层. ( 停车场可用一个二维数组实现, 每个数组元素存放一个车牌号 ) 每辆车的信息包括车牌号, 层号, 车位号, 停车时间共
时间: 2023-08-08 08:12:31 浏览: 158
以下是一个用 C 语言实现的停车场程序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEVEL 2
#define MAX_SPOT 6
// 定义车辆结构体
struct Car {
char plate_num[10]; // 车牌号
int level; // 层号
int spot; // 车位号
int time; // 停车时间
};
// 定义停车场二维数组
struct Car parking_lot[MAX_LEVEL][MAX_SPOT];
// 定义当前停车场情况
int current_level = 0;
int current_spot = 0;
// 打印停车场情况
void print_parking_lot() {
printf("当前停车场情况:\n");
for (int i = 0; i < MAX_LEVEL; i++) {
printf("第 %d 层:", i + 1);
for (int j = 0; j < MAX_SPOT; j++) {
if (strlen(parking_lot[i][j].plate_num) == 0) {
printf("[ ] ");
} else {
printf("[%s] ", parking_lot[i][j].plate_num);
}
}
printf("\n");
}
}
// 找到空位停车
void park_car(char plate_num[], int time) {
if (current_level >= MAX_LEVEL) {
printf("停车场已满,请到别处停车\n");
return;
}
if (current_spot >= MAX_SPOT) {
current_level++;
current_spot = 0;
}
parking_lot[current_level][current_spot].level = current_level;
parking_lot[current_level][current_spot].spot = current_spot;
parking_lot[current_level][current_spot].time = time;
strcpy(parking_lot[current_level][current_spot].plate_num, plate_num);
current_spot++;
printf("车辆 %s 已停在第 %d 层第 %d 个车位\n", plate_num, current_level + 1, current_spot);
}
// 根据车牌号找到车辆
struct Car find_car(char plate_num[]) {
for (int i = 0; i < MAX_LEVEL; i++) {
for (int j = 0; j < MAX_SPOT; j++) {
if (strcmp(parking_lot[i][j].plate_num, plate_num) == 0) {
return parking_lot[i][j];
}
}
}
// 没有找到车辆,返回空车辆
struct Car empty_car;
empty_car.level = -1;
return empty_car;
}
// 取车,返回停车费用
int get_car(char plate_num[], int time) {
struct Car car = find_car(plate_num);
if (car.level == -1) {
printf("未找到车辆 %s\n", plate_num);
return 0;
}
int duration = time - car.time;
int fee = duration * 2;
printf("车辆 %s 已从第 %d 层第 %d 个车位取走,停车时间为 %d 分钟,停车费用为 %d 元\n", plate_num, car.level + 1, car.spot + 1, duration, fee);
memset(&parking_lot[car.level][car.spot], 0, sizeof(struct Car));
return fee;
}
int main() {
int option;
char plate_num[10];
int time;
while (1) {
printf("\n");
printf("1. 查看停车场情况\n");
printf("2. 停车\n");
printf("3. 取车\n");
printf("4. 退出程序\n");
printf("请选择操作:");
scanf("%d", &option);
switch (option) {
case 1:
print_parking_lot();
break;
case 2:
printf("请输入车牌号:");
scanf("%s", plate_num);
printf("请输入停车时间(分钟):");
scanf("%d", &time);
park_car(plate_num, time);
break;
case 3:
printf("请输入车牌号:");
scanf("%s", plate_num);
printf("请输入取车时间(分钟):");
scanf("%d", &time);
get_car(plate_num, time);
break;
case 4:
printf("退出程序\n");
return 0;
default:
printf("无效的操作,请重新输入\n");
break;
}
}
}
```
该程序实现了一个简单的停车场系统,可以查看停车场情况、停车、取车,并计算停车费用。停车场使用一个二维数组实现,每个数组元素存放一个车辆的信息,包括车牌号、层号、车位号和停车时间。在停车时,先找到空位停车,如果当前层停满了则切换到下一层。在取车时,根据车牌号找到车辆,并根据停车时间计算停车费用。
阅读全文