通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"考研真题" 试卷中 2025年考研408计算机统考真题在线评测(附答案) 中有题目如下:
第1题
(本题 7 分)甲、乙、丙三人一起植树,甲负责挖树坑,乙负责将树苗放入树坑中并填土,丙负责为新种的树苗浇水。植树的步骤依次为:挖树坑、放树苗、填土和浇水。现有铁锹和水桶各 1 个,铁锹用于挖树坑和填土,水桶用于浇水。当树坑的数量小于 3 时,甲才可以挖树坑。假设初始时树坑的数量为 0,铁锹和水桶均可用。请定义尽可能少的信号量,用 wait ()、signal () 操作描述植树过程中三人之间的同步或互斥关系,并说明所用信号量的作用及其初值。
参考答案:
信号量 empty:作用是控制可挖树坑的最大数量,确保树坑总数不超过 3,以此同步甲的挖坑行为 —— 只有当已挖树坑数小于 3 时,甲才能执行挖坑操作,其初值为 3。
信号量 pit:用于表示已挖好且尚未被乙使用的树坑数量,承担甲(树坑生产者)和乙(树坑消费者)之间的同步功能 —— 甲挖好树坑后会触发该信号量,乙需等待该信号量可用才能进行放树苗操作,其初值为 0。
信号量 seedling:表示已完成放树苗和填土步骤、等待丙浇水的树苗数量,实现乙(栽种生产者)和丙(浇水消费者)之间的同步 —— 乙栽种完成后触发该信号量,丙需等待该信号量可用才能进行浇水操作,其初值为 0。
信号量 spade:用于实现铁锹的互斥使用,因为铁锹既供甲挖树坑,又供乙填土,同一时间只能由一人使用,通过该信号量避免资源竞争,其初值为 1。
甲(挖树坑)
while (true) { wait(empty); // 检查是否允许挖树坑(树坑数<3) wait(spade); // 申请铁锹(互斥使用) 挖树坑; // 核心操作 signal(spade); // 释放铁锹 signal(pit); // 挖好1个树坑,通知乙可使用 }
乙(放树苗 + 填土)
while (true) { wait(pit); // 等待甲挖好树坑 放树苗; // 无需竞争资源,直接执行 wait(spade); // 申请铁锹(填土用) 填土; // 核心操作 signal(spade); // 释放铁锹 signal(empty); // 树坑已使用,释放1个“可挖坑名额” signal(seedling); // 栽种完成,通知丙可浇水 }
丙(浇水)
while (true) { wait(seedling); // 等待乙栽种好树苗 浇水; // 水桶唯一且无竞争(仅丙使用),直接执行 }
所属试卷:2025年考研408计算机统考真题在线评测(附答案)
(本题 7 分)甲、乙、丙三人一起植树,甲负责挖树坑,
编写代码获得用户输入的一个三角形的 3 条边长,计算三
编写程序输入一个可能带空格的字符串,查找字符'z'出现
给定程序MODI1.C中函数fun的功能:先将s所指字
有三个关系R、S和T如下。由关系R和S通过运算得到关系
有以下程序执行程序时,给变量x输入10,程序的输出结果
表达式 chr(ord('A')+2)的值为_____
#编程用递归函数实现1+2+3+4+……+n,并显示所
假设已从标准库functools导入reduce( )
下列选项中不属于结构化程序设计原则的是( )。
有以下程序程序运行后的输出结果是( )。
从键盘输入一个字符串a,并在a串中的最大元素后边插入字
请读以下函数假设机器的无符号整数字长为16位,若调用此
下面程序功能是:从键盘读入一个可以带空格的字符串(假设
用shell编写小九九乘法表程序,程序执行结果如下:答
用SELECT进行模糊查询时,可以使用 或 等
修改用户账号命令是
链表不具有的特点是( )
构造连通网最小生成树的两个典型算法是( )
已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结
对 n 个互不相同的符号进行哈夫曼编码。若生成的哈夫曼
下列选项中不属于 I/O 接口的是( )。
一棵有 n 个结点的完全二叉树用数组进行存储与表示,已
设有int x=11,则表达式(x++ * 1/3)的
数组整体可以参加各种数学运算,数组元素也可以参加各种数
假定有以下变量定义:则能使值为3的表达式是( )。
执行下列语句的结果是_____。
假设输入的 n 是不超过 50 的正整数,d[i][0
如果一棵二叉树的中序遍历是 BAC,那么它的先序遍历不
书架上有 21 本书,编号从 1 到 21 ,从其中选
更多选择题
更多填空题
计算机二级Python语言程序设计模拟试卷
Python第三方库
2025年考研408计算机统考真题在线评测(附答案)
Python标准库
Python函数
Python文件
Python组合数据类型