自动寄存柜c语言实验
时间: 2023-07-09 21:06:15 浏览: 62
这里是一个简单的自动寄存柜的C语言实验示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define CABIN_NUM 10
#define CABIN_SIZE 20
char cabin[CABIN_NUM][CABIN_SIZE];
int occupied[CABIN_NUM] = {0};
int find_cabin() {
for (int i = 0; i < CABIN_NUM; i++) {
if (occupied[i] == 0) {
return i;
}
}
return -1;
}
void show_cabins() {
printf("Cabin Status:\n");
for (int i = 0; i < CABIN_NUM; i++) {
printf("%d: %s\n", i, cabin[i]);
}
printf("\n");
}
int main() {
int cmd, cabin_num;
char item[CABIN_SIZE];
while (1) {
printf("1: Store item\n");
printf("2: Retrieve item\n");
printf("3: Show cabin status\n");
printf("4: Exit\n");
printf("Command: ");
scanf("%d", &cmd);
switch (cmd) {
case 1:
cabin_num = find_cabin();
if (cabin_num == -1) {
printf("No available cabin!\n");
} else {
printf("Input item: ");
scanf("%s", item);
strcpy(cabin[cabin_num], item);
occupied[cabin_num] = 1;
printf("Item %s stored in cabin %d.\n", item, cabin_num);
}
break;
case 2:
printf("Input cabin number: ");
scanf("%d", &cabin_num);
if (cabin_num < 0 || cabin_num >= CABIN_NUM) {
printf("Invalid cabin number!\n");
} else if (occupied[cabin_num] == 0) {
printf("This cabin is empty!\n");
} else {
printf("Item %s retrieved from cabin %d.\n", cabin[cabin_num], cabin_num);
strcpy(cabin[cabin_num], "");
occupied[cabin_num] = 0;
}
break;
case 3:
show_cabins();
break;
case 4:
exit(0);
default:
printf("Invalid command!\n");
}
}
return 0;
}
```
该示例中定义了一个大小为10的寄存柜数组,每个寄存柜的大小为20。程序提供了存储物品、取回物品、显示寄存柜状态和退出程序等四个命令。在存储物品时,程序会寻找第一个空闲的寄存柜,并将物品存放在其中。在取回物品时,程序需要输入要取回物品所在的寄存柜编号。程序还提供了一个显示所有寄存柜状态的函数show_cabins(),用于方便用户查看当前寄存柜的使用情况。