停车场管理(C语言)

【题目描述】停车场管理。设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的先后次序依次从停车场最里面向大门口处停放 (即最先到达的第一辆车停放在停车场的最里面) 。如果停车场已放满n辆车,则以后到达的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车可以进入停车场。停车场内如有某辆车要开走,则在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费,停留在便道上的车不收停车费。编写程序对该停车场进行管理。

输入数据时,先输入一个整数n(n≤10),再输入若干组数据,每组数据包括三个数据项:汽车到达或离开的状态(A表示到达、D表示离开、E表示结束)、汽车号码、汽车到达或离开的时刻。

若有车辆到达,则输出该汽车的停车位置;若有车辆离开,则输出该汽车在停车场内停留的时间。

【代码】

c 复制代码
#include <stdio.h>
struct Car {
    char status;
    int num;
    int time;
};
int main(void) {
    int n;
    scanf("%d", &n);
    struct Car park[n], street[100];
    getchar();
    int now_n = 0, s_n = 0;
    while (1) {
        struct Car car;
        scanf("%c %d %d", &car.status, &car.num, &car.time);
        if (car.status == 'E') {
            break;}
        else if (car.status == 'A') {
            if (now_n < n) {  //当前有空余车位 
                park[now_n] = car;
                printf("%d号车停入%d号位\n", car.num, now_n+1);
                now_n++;}
            else {
                street[s_n] = car;
                printf("%d号车在便道上等待\n", car.num);
                s_n++;}}
       else if (car.status == 'D') {
            int i = 0, j;
            for (i=0; i<now_n; i++) {
                if (car.num == park[i].num) {
                    break;}}
            printf("%d号车出停车场,停留时间%d\n", car.num, car.time - park[i].time);
            for (j=i+1; j<now_n; j++) {
                park[j-1] = park[j];}
            now_n--;
            if (s_n) {
                printf("%d号车停入3号位\n", street[0].num);
                now_n++; 
                park[n-1] = street[0];
                park[n-1].time = car.time;
                for (i=1; i<s_n; i++) {
                    street[i-1] = street[i];}
                s_n--;}}}
    return 0;}
相关推荐
无敌昊哥战神2 小时前
【LeetCode 134】加油站:图解指针跳跃与 O(N) 极简贪心,避开 Python 隐藏坑!
c语言·python·算法·leetcode
小糯米6012 小时前
C语言 指针4
c语言·数据结构·算法
Rabitebla2 小时前
深入理解 C++ STL:stack 和 queue 的底层原理与实现
c语言·开发语言·数据结构·c++·算法
艾iYYY3 小时前
类和对象(详解初始化列表, static成员变量, 友元,内部类)
c语言·数据结构·c++·算法
bnmoel3 小时前
数据结构深度剖析链表全集:结构实现、分类与底层原理全解析
c语言·数据结构·算法·链表·双向链表
坚果派·白晓明3 小时前
【鸿蒙PC三方库移植适配框架解读系列】第六篇:关键注意事项与最佳实践
c语言·开发语言·c++·华为·harmonyos·开源鸿蒙
披着假发的程序唐3 小时前
STM32 H743 MPU的配置使用方法
linux·c语言·c++·驱动开发·stm32·单片机·mcu
東隅已逝,桑榆非晚3 小时前
深⼊理解指针(3)
c语言·数据结构·笔记·算法·排序算法
Mr.H01274 小时前
C语言MQTT学习系列(3篇):第一篇:从零开始学MQTT(C语言版):入门必看,跑通最简Demo
c语言·网络·学习
知识领航员14 小时前
蘑兔AI音乐深度实测:功能拆解、实测表现与适用场景
java·c语言·c++·人工智能·python·算法·github