A-A+

阅读以下函数说明和C语言函数 将应填入(n)处的字句写在对应栏内。 [说明] 这是一个模

2022-08-06 00:55:53 问答库 阅读 174 次

问题详情

阅读以下函数说明和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("客车货车(01): 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
(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”。④提示相应错误信息并退出程序运行。

考点:函数,字句