当前位置: 首页icon 51CTO软考 > 软考资讯 >考试科目 >2023年5月程序员 模拟二 下午之四

2023年5月程序员 模拟二 下午之四

作者:mb64a2dd422e24f2023-12-25 01:00:15
备考咨询 刷题指导
添加专属学姐
下载资料 2024上半年软考备考资料+考试大纲
下载按钮 下载
引号

摘要:对于【程序员】软考考试而言,试题无疑是最重要的学习资料之一。在软考备考过程中,吃透试题、掌握试题所考知识点、熟悉试题的出题思路,对我们提升分数的效果是最明显的,通过对试题的反复练习,还可以查漏补缺。今天,给大家带来【2023年5月程序员 模拟二 下午】部分试题的详解,一起来看看吧~1、试题四(共15分,每空3分)阅读以下函数说明和C语言函数,将应填入  (n)

引号
摘要:对于【程序员】软考考试而言,试题无疑是最重要的学习资料之一。在软考备考过程中,吃透试题、掌握试题所考知识点、熟悉试题的出题思路,对我们提升分数的效果是最明显的,通过对试题的反复练习,还可以查漏补缺。今天,给大家带来【2023年5月程序员 模拟二 下午】部分试题的详解,一起来看看吧~



1、试题四(共15分,每空3分)阅读以下函数说明和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”。④提示相应错误信息并退出程序运行。



查看完整试题>>>


代理合作学习群