阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 [说明] 这是一个模拟渡口管理的算法。某汽车轮渡口,过江渡船每次能载10辆车过江。过江车辆分为客车类和火车类,上船有如下规定:同类车先到先上船,客车先于货车上渡船,且每上4

admin2010-12-16  35

问题 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
   [说明]
   这是一个模拟渡口管理的算法。某汽车轮渡口,过江渡船每次能载10辆车过江。过江车辆分为客车类和火车类,上船有如下规定:同类车先到先上船,客车先于货车上渡船,且每上4辆客车,才允许上一辆货车;若等待客车不足4辆,则以货车代替,若无货车等待则允许客车都上船。
   程序中用到的函数有enqueue(queue*sq,elemtype*x)在队列sq中入队一个元素x;outqueue(queue*sq,elemtype*x)在队列sq中出队一个元素,并将其值赋给x;empty(queue*sq)判断队列sq是否为空队,若为空,返回1;否则返回0。
   [C程序]
   #include<stdio.h>
   void pass(){
     queue bus,truct;  /*bus表示客车队列,truck表示货车队列*/
      char ch;
      int n,tag;  /* ]n为车号,tag为标志,tag=0表示客车,tag=1表示货车*/
       intcount=0,countbus=0,counttruck=0;  /*分别表示上渡船汽车数、客车数、货车数*/
      while(1){
        printf("输入命令: \n");
        Scanf("%c",&ch);
        switch(ch){
          case’e’:  
          case’E’: printf("车号: \n");
                  Scanf("%d",&n);
                  printf("客车\货车(0\1): \n");
                  scanf("%d",&tag);
                  if(  (1)  )
                    enqueue(&bus,n);
                  else
                    enqueue(&truck,n);
                  break;
          case’i’:  
          case’I’: while(count<10){
                  if( (2) && empty(&bus)==0){    /*客车出队*/
                    outqueue(&bus,&n);
                    printf("上船的车号为: \n");
                    count++;
                     (3) ;
                  }
                  eise if( (4) ){    /*货车出队*/
                     countbus=0;
                     outqueue(&truck,&n);
                     printf("上船的车号为: \n");
                     count++;
                     counttruck++;
                  }
                  else if(empty(&bus)==0){
                     (5);
                    outqueue(&truck,&n);
                    printf("没有10辆车排队轮渡\n");
                    count++;
                    countbus++;
                  }
                  else{
                    printf("没有10辆车排队轮渡\n");
                    retUrn;
                  }
                  break;
                }
          case’q’:
          case’Q’:break;
          }
          if(ch==’q’  ||  ch==’Q’)
            break;
     }
   }

选项

答案(1) tag==O (2) count<4 (3) countbus++ (4)empty(&truck)==0 (5) counttruck=0

解析 命令E(e)表示有汽车来等船渡江,按客车、货车分类进入相应的队列排队。所以空(1)填“tag==0”,表示客车来渡船。命令I(i)表示渡船到渡口,在count小于10时环形:①若count<4,客车队列又非空,将客车队列的队头汽车出队上渡船。count和countbus增1;否则转②。所以空(2)填“count<4”,空(3)填“countbus++”。②若count>=4,或客车队列为空队且货车队列非空,将货车队列的队头汽车出队上渡船。count和counttruck增1,否则转③。即空(4)填“empty(&tmck)==0”。③若货车队列为空队且客车队非空,将客车队列的队头汽车出队上渡船。count和countbus增1,否则转④。因此(5)填“counttruck=0”。④提示相应错误信息并退出程序运行。
转载请注明原文地址:https://jikaoti.com/ti/1XW7FFFM
0

最新回复(0)