天梯赛题目练习——停车场管理(部分正确,希望大家能帮忙看看)

题目

在这里插入图片描述
在这里插入图片描述

部分正确的代码

#include<stdio.h>
#include<string.h>
struct Car{
	int num;
	int hour;
};
int Hour=0;
int main()
{
	int n;
	scanf("%d",&n);
	struct Car car[n],wait[100];
	char state;
	int i=0,j=0,num,hour,temp,flag,is=0;
	// i用来记录车库中的车辆,j用来记录便道上的车辆   
	//temp表示临时的循环变量,防止影响i,j的值 
	//flag用来记录经过查找后的目标车辆位置 
	while(1)
	{
		scanf("%c %d %d",&state,&num,&hour);
		Hour++;
		if(state=='E') 
		{
			if(i==0)
			{
				printf("the car not in park");break;
			}
			printf("car#%d out,parking time %d",car[i-1].num,Hour/2-car[i-1].hour);
			break;
		}
		else if(state=='A')
		{
			if(i<n)
			{
				if(j==0)
				{
					car[i].num=num;
					car[i].hour=hour;
					printf("car#%d in parking space #%d\n",car[i].num,i+1);
					i++;
				}
				else
				{
					wait[j].num=num;
					wait[j].hour=hour;
					printf("car#%d waiting\n",wait[j].num);
					j++;
				}
			}
			else
			{
				wait[j].num=num;
				wait[j].hour=hour;
				printf("car#%d waiting\n",wait[j].num);
				j++;
			}
		}
		else if(state=='D')
		{
			for(temp=0;temp<i;temp++)
			{
				if(car[temp].num==num) 
				{
					is=1;break;
				}
			}
			if(wait[0].num==num) is=1;
			if(is)
			{
				if(wait[0].num==num)
				{
					car[i].num=num;
					car[i].hour=hour;
					printf("car#%d in parking space #%d\n",car[i].num,i+1);
					i++;
					for(temp=0;temp<j-1;temp++)
					{
						wait[temp]=wait[temp+1];
					}
					j--;
				}
				else
				{	
					for(temp=0;temp<n;temp++)
					{
						if(car[temp].num==num)
						{
							flag=temp;break;	
						}	
					} 
	//				if(temp==n)
	//				{
	//					printf("the car not in park\n");
	//					continue;
	//				}
					printf("car#%d out,parking time %d\n",num,hour-car[temp].hour);
					for(temp=flag;temp<n-1;temp++)
					{
						car[temp]=car[temp+1];
					}
					i--;
				}
			}
			else
			printf("the car not in park\n");
			is=0;
		}
	}
}

PTA测试点

在这里插入图片描述

求助

汽车号码错误的情况我已经判断了,但还是报错,希望大家能帮我看看,共同找出问题所在。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值