找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2333|回复: 0
打印 上一主题 下一主题
收起左侧

一个基于C语言的码头调度程序,要求客车和货车的出列顺序是每四辆客车后跟一辆货车

[复制链接]
跳转到指定楼层
楼主
ID:643422 发表于 2019-11-16 23:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<stdio.h>
#include <stdlib.h>
#define true 1
#define false 0
#define null  0
#define MAXNUM  20
typedef int  elemtype;
typedef struct queue_type
{
        elemtype queue[MAXNUM + 1];
        int front;
        int rear;
} queuetype;
queuetype Q1;
queuetype Q2;
//初始化
void  q_init(queuetype *q)
{
        q->rear = q->front = 0;
}

//入队操作
int enter(queuetype *q, elemtype x)
{
        if ((q->rear + 1) % (MAXNUM + 1) == q->front)
                return (false);                    //队列已满
        else
        {
                q->rear = (q->rear + 1) % (MAXNUM + 1);
                q->queue[q->rear] = x;
                return (true);
        }
}

//出队操作
elemtype queue_out(queuetype *q)
{
        if (q->front == q->rear)
                return (null);
        else
        {
                q->front = (q->front + 1) % (MAXNUM + 1);
                return(q->queue[q->front]);
        }
}

int main()
{
        int p=1;
        int i, j, k, m, n, x, y, z;
        queuetype *q1;
        queuetype *q2;
        q1 = &Q1;
        q2 = &Q2;
        q_init(q1);
        q_init(q2);
        for (m = 1;m <=100;m++)
        {
                printf("\n");
                printf("若是入列,请输入1;若是出列,请输入0:\n");
                scanf_s("%d", &z);
                if (z != 0 && z != 1)
                {
                        printf("ERROR!!!\n");
                        scanf_s("%d", &z);
                }
                if (z == 1)
                {
                        {
                                printf("第%d辆车的编号是:\n", m);
                                scanf_s("%d", &x);
                                printf("若是客车,请输入1;若是货车,请输入0:\n");
                                scanf_s("%d", &y);
                                if (y == 1)
                                {
                                        enter(q1, x);
                                }
                                else if (y == 0)
                                {
                                        enter(q2, x);
                                }
                        }
                        printf("客车数%d  货车数%d", q1->rear, q2->rear);
                }
                else if (z == 0)
                {
                        for(k=m/10;k>=0;k--)
                        {
                          for(n=1;n<=10;)
                          {
                                for (j = 1;j <= 2;j++)
                                {
                                        for (i = 0;i <= 3;i++)
                                        {
                                                int result=queue_out(q1);
                                                if(result!=0)
                                                {
                                                 printf("上船的第%d辆车的编号为%d\n", n, result);
                                                 n = n + 1;       
                                                }
                                                else
                                                break;          
                                        }
                                        int RESULT=queue_out(q2);
                                        if(RESULT!=0)
                                        {
                                          printf("上船的第%d辆车的编号为%d\n", n, RESULT);
                                          n = n + 1;
                                        }
                                }
                                break;
                      }
                      printf("以上为第%d艘船里的车辆\n\n",p);
                      p++;
                    }
                }
        }
        system("pause");
        return 0;
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表