#include<stdio.h>
#include<stdlib.h>
#define MAX_STOP 5
#define MAX_PAVE 100
typedef struct{
char *license_plate;
char state; //汽车当前状态,字符s表示停放在停车位上,字符p表示停放在便道上,每辆车的初始状态用i表示
}CAR;
typedef struct {
CAR STOP[MAX_STOP];
int top;
}STOPPING;
typedef struct {
CAR PAVE[MAX_PAVE];
int front,rear;
}PAVEMENT;
typedef struct {
CAR BUFF[MAX_STOP];
int top;
}BUFFER;
STOPPING P;PAVEMENT Q;BUFFER R;char *str;
void welcome(){
printf("\t**欢迎使用本程序**\n");
printf("\t本程序为停车场的模拟管理程序,有车到来时请按【c】建。\n");
printf("\t然后根据屏幕提示进行相关操作,有车要走时请按【l】键。\n");
printf("\t然后根据屏幕提示进行相关操作,查看停车场状态请按【s】键。\n");
printf("\t然后根据屏幕提示进行相关操作,要退出程序请按【Q】键。\n");
printf("\t请选择你要进行的操作!\n\n\n");
}
void come()
{
printf("请输入进来的车辆的车牌号:",str);
scanf("%c",*str);
if(P.top<MAX_STOP)//如果停车位没满
{
P.STOP[P.top].license_plate=str;
P.STOP[P.top].state='s';
printf("牌照号为%c的汽车停入停车位的%d车位",str,P.STOP[P.top]);
P.top++;}
else//停车位已经满了,要停放在便道上
{
Q.rear++;
Q.PAVE[Q.rear].license_plate=str;
Q.PAVE[Q.rear].state='p';
printf("牌照号为%c的汽车停入便道的%d的位上",str,Q.PAVE[Q.rear]);}
}
void leave()
{
printf("请输入要离开的车辆的车牌号:",str);
scanf("%c",*str);
while(P.top<MAX_STOP-1)
{
R.top++;
P.top--;
R.BUFF[R.top].license_plate==P.STOP[P.top].license_plate;
P.STOP[P.top].state='i';
R.BUFF[R.top].state='i';
printf("牌照号为%c的汽车暂时退出停车位");
}
if(P.top=MAX_STOP-1)
{
P.top--;
printf("牌照号为%c的汽车离开停车位"); }
while(R.top>0&&P.top<MAX_STOP-1)
{P.STOP[P.top].license_plate==R.BUFF[R.top].license_plate;
P.STOP[P.top].state='s';
printf("牌照号为%c的汽车回到停车位");
P.top++;
R.top--;
}
while(Q.front<Q.rear+1&&P.top<MAX_STOP)//便道上的车停到停车场上
{P.STOP[P.top].license_plate==Q.PAVE[Q.front].license_plate;
printf("牌照号为%c的汽车从便道进入停车位");
P.STOP[P.top].state=='s';
Q.front++;
P.top++;
}
}
void display()
{
printf("停车位的情况:");
if(P.top==0)
printf("停车场无车停放");
else
for(int c=1;c<P.top;c++)
{
printf("c位置有牌照号为P.STOP[c].license_plate的车停放");}
printf("便道的情况:");
if(Q.front<Q.rear+1)
{int l=1;
int k;
k=Q.rear-(Q.rear-Q.front);
while(l<Q.rear+2-Q.front)
{printf("l位置有牌照号为Q.PAVE[l].license_plate的停放");
l++;
Q.front++;
k++;
}
}
}
int main()
{
char key;
welcome();
P.top=1;
Q.front=1;
Q.rear=0;
R.top=0;
do{
key=getchar();
if(key=='C'||key=='c')
come();
else if(key=='L'||key=='l')
{leave();
}
else if(key=='S'||key=='s')
display();
else
welcome();
}
while (key!='Q'&&key!='q');
return 0;
}
你最好说说你遇到什么问题,不要让大家猜啊
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m