2000年度程序员级下午试卷
- 格式:doc
- 大小:62.50 KB
- 文档页数:7
2000年全国计算机软件专业资格和水平考试高级程序员级试题及答案试题1从供选择的答案中,选出应填入下面叙述中_?_内的最确切的解答,把相应编号写在答卷的对应栏内。
二叉树的前序、中序和后序遍历法最适合采用_A_来实现。
查找树中,由根结点到所有其他结点的路径长度的总和称为_B_,而使上述路径长度总和达到最小的树称为_C_,它一定是_D_。
在关于树的几个叙述中,只有_E_是正确的。
供选择的答案:A:①递归程序②迭代程序③队列操作④栈操作B:①路径和②内部路径长度③总深度④深度和C:①B-树②B+树③丰满树④穿线树D:①B-树②平衡树③非平衡树④穿线树E:①用指针方式存储有n个结点二叉树,至少要有n+1个指针②m阶B-树中,每个非椰子结点的后件个数≥[m/2]③m阶B-树中,具有k个后件的结点,必含有k-1个键值④平衡树一定是丰满树试题2从供选择的答案中,选出应填入下面叙述中_?_内的最确切的解答,把相应编号写在答卷的对应栏内。
当存储器采用段页式管理时,主存被划分为定长的_A_,程序按逻辑模块分成_B_。
在某机器的多道程序环境下,每道程序还需要一个_C_作为用户标志号,每道程序都有对应的_D_。
一个逻辑地址包括_C_x、段号s、页号p和页内地址d四个部分。
设逻辑地址长度分配如下,其中x、s、p、d均以二进制数表示④④④E:①x*220+s*214+p*211+d ②(((x)+s)+p)+d ③(((x)+s)+p)*211+(d)④(((x)+s)+p)*211+d试题3从供选择的答案中,选出应填入下面叙述中_?_内的最确切的解答,把相应编号写在答卷的对应栏内。
假设某程序语言的文法如下:S→a|b|(T)T→TdS|S其中:VT ={a,b,d,(,)},VN={S,T},S是开始符号。
考察该文法,称句型(Sd(T)db)是S的一个_A_,其中:_B_是句柄;_C_是素短语;_D_是该句型的直接短语;_E_是短语。
全国计算机技术与软件专业技术资格全国计算机技术与软件专业技术资格((水平水平))考试考试2010年上半年年上半年 程序员程序员程序员 下午试卷下午试卷下午试卷(考试时间 14:00~16:30 共150分钟)请按下述要求正确填写答题纸请按下述要求正确填写答题纸1. 在答题纸的指定位置填写你所在的省、自治区、直辖市、计划单列市的名称。
2. 在答题纸的指定位置填写准考证号、出生年月日和姓名。
3. 答题纸上除填写上述内容外只能写解答。
4. 本试卷共6道题,试题一至试题四是必答题,试题五至试题六选答1道。
每题15分,满分75分。
试题号 一~四 五~六选择方法 必答题选答1题5. 解答时字迹务必清楚,字迹不清时,将不评分。
6. 仿照下面例题,将解答写在答题纸的对应栏内。
例题例题2010年上半年全国计算机技术与软件专业技术资格(水平)考试日期是(1)月(2)日。
因为正确的解答是“5月22日”,故在答题纸的对应栏内写上“5”和“22”(参看下表)。
例题 解答栏 (1) 5 (2)22阅读以下说明和流程图,将应填入 (n) 处的字句写在答题纸的对应栏内。
说明】】【说明下面的流程图旨在统计指定关键词在某一篇文章中出现的次数。
设这篇文章由字符A(0),…,A(n-1)依次组成,指定关键词由字符B(0),…,B(m-1)依次组成,其中n>m≥1。
注意,关键词的各次出现不允许有交叉重叠。
例如,在“aaaa”阅读以下问题说明、C程序和函数,将解答填入答题纸的对应栏内。
【问题1】分析下面的C程序,指出错误代码(或运行异常代码)所在的行号。
【C程序程序】】行号代码1 2 3 4 5 6 7 8 9101112 #include <stdio.h>#include <string.h>int main(){ char *p, arrChar[100] = "testing";arrChar = "test";p = "testing";*p = '0';p = arrChar + 1;printf("%d\t%d\n",sizeof(arrChar),strlen(arrChar));printf("%d\t%d\n",sizeof(char *),strlen(p));return 0;}【问题2】函数inputArr(int a[], int n)的功能是输入一组整数(输入0或输入的整数个数达到n 时结束)存入数组a,并返回实际输入的整数个数。
初级程序员下午试题 -90( 总分: 90.00 ,做题时间: 90 分钟 )一、试题一 (总题数: 1,分数: 15.00)1. 阅读以下说明和流程图,回答问题将解答填入对应栏。
[ 说明 ]本流程图实现采用递归函数来求一个整数数组中从元素 0到元素 n 中的最小值。
该算法思想是这样的,首先我们假设有一个求数组中最小元素的函数,然后,在求某一具有 n 的元素的数组的最小值时,只要求将 前 n-1 的元素的最小值与第 它必定是最小值。
注: int min(int X,int y) intminInArray(int a[],int n) minA 为数组中最小值。
n 个元素比较即可。
不断地重复这一过程,直到数组中只剩下一个元素,那么 为返回两数中最小数的函数。
为返回数组中最小数的函数。
[ 问题 l]将流程图的 (1) ~(4) 处补充完整。
[ 问题 2]min() 函数的定义为 (5) 。
(分数: 15.00 )填空项 1: ________________ (正确答案: minInArray(a,n) ; (2) 1 ; (3) minA=a[n-1] ;(4) minA=min(minInArray(a,n-1) , a[n]) ; (5) x <y?x:y ;)解析: [ 解析 ] 本题目考查流程图。
题目是利用递归来求数组中的最小值,则一定是反复的调用一个求数组最小值的函数,直到比较数组中最 后只剩下两个数,则 (1) 中填入的应是“ minlnArray(a,n) ”,然后,判断 n 的值是否为 1,如果是,则说 明数组中只有一个数, 则它一定就是最小值, 可以直接输出,所以(2) 应填入“ 1”,(3) 应填入“ minA=a[n] ”; 如果 n 的值不是 1,则说明要继续递归, 则再次调用求数组最小值的函数,把数组前 n-1 项的最小值同第 n 项做比较,所以 (4) 填入“ minA=min(minInArray(a,n -1) ,a[n]) ”,由于 min() 是一个比较函数,返回两 数中较小的数,我们可以用三元运算符直接定义为 x < y?x:y 。
2001年度高级程序员级下午试卷及答案第一篇:2001年度高级程序员级下午试卷及答案2001年度高级程序员级下午试卷及答案试题一阅读下列说明和流程图,回答问题1至问题3,把解答填入答题纸的对应栏内。
[说明] 某计算机厂生产多种型号的计算机,通过分布在世界各地的销售点销售,销售点应在收到计算机商品后的规定时间内把货款汇给该计算机厂。
流程图1 描述了该厂发货、收款、催款的处理过程。
其中商品文件、销售点文件、发货文件和收款文件的记录格式如下: 商品文件 = 商品代号 + 计算机规格名称 + 单价销售点文件 = 销售点代号 + 销售点名称 + 地址发货文件 = 发货单号 + 发出日期 + 销售点代号 + 商品代号 + 数量 + 金额收款文件 = 收款单号 + 收款日期 + 销售点代号 + 商品代号 + 数量 + 金额 + 发货单号在流程图中,处理 1~处理 3 把当天的发货单合并到发货文件。
处理4~处理6 把当天的收款单合并到收款文件。
每天在处理 3 和处理 5 完成之后,由处理 7 在发货文件中当天已收款的记录上加上已收款标记。
处理 8 在月末执行一次,它有三个功能: ①汇总输出本月发货清单;②删除发货文件中已收款的所有记录,形成一个新的发货文件,作为下月初处理时的初始文件③产生催款通知单,以便对那些一个月以前已发货但至今仍未收到货款的销售点催款。
[问题1] 指出流程图 l 中应在哪几个处理框中检查发货单和收款单的错误,并分别说明它们各能指出什么错误。
[问题2] 如果把流程图 1 中从日收款分类文件到处理 7 的连线改成从日收款文件到处理7 的连线,则有什么缺点,理由是什么? [问题3] 处理9 每月末执行一次如流程图所示,利用收款文件产生月收款报告并更新收款文件。
要求指出它对收款文件做什么更新操作。
试题二阅读下列说明和流程图,回答问题 1 至问题 3 ,把解答填入答题纸的对应栏内。
[说明] 某考务处理系统具有以下功能: 1.输入报名单;2.自动编制准考证号;3.输出准考证;4.输入成绩清单;5.输出成绩通知单;6.输出成绩分布表;7.输入合格标准、输出录取通知单;8.试题难度分析,并输出试题难度分析表。
第一章绪论选择题A型题1.病理生理学研究的是A.正常人体形态结构的科学B.正常人体生命活动规律的科学C.患病机体形态结构变化的科学D.患病机体生命活动规律的科学E.疾病的表现及治疗的科学[答案]D2.病理生理学总论内容是A.讨论病因学和发病学的一般规律B.讨论典型病理过程C.研究疾病中可能出现的、共同的功能和代谢和结构的变化D.单纯讨论疾病的概念E.讨论系统器官的总体改变[答案]A3.基本病理过程是指A.讨论病因学和发病学的一般规律B.讨论典型病理过程C.研究某个系统疾病中可能出现的、共同的功能和代谢的变化D.单纯讨论疾病的概念E.讨论系统器官的总体改变[答案]B4.病理生理学各论是指A.讨论病因学和发病学的一般规律B.讨论典型病理过程C.研究疾病中可能出现的、共同的功能和代谢的变化D.单纯讨论疾病的概念E.讨论系统器官的病理生理学[答案]E5.下列哪项不属于基本病理过程A.发热B.水肿C.缺氧D.心力衰竭E.代谢性酸中毒[答案]D6.病因学的研究是属于A.病理生理学总论内容B.基本病理生理过程内容C.病理生理学各论的内容D.疾病的特殊规律E.研究生物因素如何致病[答案]A7.病理生理学研究的主要手段是A.病人B.病人和动物C.疾病D.动物实验E.发病条件[答案]DB型题A.各个疾病中出现的病理生理学问题B.多种疾病中出现的共同的成套的病理变化C.疾病中具有普遍规律性的问题D.重要系统在不同疾病中出现的共同的病理生理变化E.患病机体的功能、代谢的动态变化及机制1.各系统病理生理学主要研究的是2.基本病理过程主要研究的是3.疾病概论主要研究的是[答案]1D 2B 3CC 型题A.呼吸功能衰竭B.弥散性血管内凝血C.两者均有D.两者均无1.基本病理过程包括2.系统病理生理学包括[答案]1B 2Ax 型题1.病理生理学主要从什么方面来揭示疾病的本质A功能方面B形态方面C代谢方面D细胞结构方面E超微结构方面[答案]AC2.病理生理学常用的研究方法包括A.临床观察B.动物实验C.流行病学调查D.病变器官形态学变化的研究E.尸体解剖[答案]A B C二、填空题1.病理生理学总论,又称疾病________。
2000年度高级程序员级下午试题阅读以下说明和流程图,回答问题 1 和问题 2 ,将解答写在答卷的对应栏内。
[说明]本流程图实现从成绩文件生成学生成绩一览表。
某中学某年级的学生成绩数据(分数)登录在成绩文件 F0 中,其记录格式如下:由该成绩文件生成如下表所示的学生成绩一览表。
生成的学生成绩一览表按学号升序F,然后经过处理 2 至处理 4 对文件 F 进行处理和更新。
在处理 5 中,仅对文件 F 的记录进行学生成绩一览表的编排输出,不进行排序和增加名次等处理。
(问题1][问题2]简述处理 2、处理 3 和处理 4 作何种处理,若有排序处理则需指明排序的键及序(升序或降序)。
[流程图]试题二 (15分)阅读以下说明和流程图,回答问题 1 至问题 4 ,将解答写在答卷的对应栏内。
[说明]本流程图是将中缀表示的算术表达式转换成后缀表示。
如中缀表达式(A-(B*C+D)*E)/(F+G)的后缀表示为ABC*D+E*-FG+/为了方便,假定变量名为单个英文字母,运算符只有+,-,*,/(均为双目运算符,左结合),并假定所提供的算术表达式非空且语法是正确的。
另外,中缀表示形式中无空格符,但整个算术表达式以空格符结束。
流程图中使用的符号的意义如下:数组 IN[] 存贮中缀表达式;数组 POLISH[] 存贮其后缀表示;数组 S[] 是一个后进先出栈;函数 PRIOR(CHAR)[问题1]填充流程图中①的判断条件o[问题2]写出子程序 A 的功能,并顺序写出实现该功能的操作。
[问题3]写出子程序 B 的功能,并顺序写出实现该功能的操作。
[问题4]中缀表达式(A+B-C*D)*(E-F)/G经该流程图处理后的输出是什么?[流程图试题三 (15分)阅读以下说明和流程图,回答问题 1 和问题 2,将解答写在答卷的对应栏内。
[说明]某供销系统接受顾客的订货单,当库存中某配件的数量小于订购量或库存量低于一定数量时,向供应商发出采购单;当某配件的库存量大于或等于订购量时,或者收到供应商的送货单并更新了库存后,向顾客发出提货单。
全国计算机技术与软件专业技术资格(水平)考试2016年下半年程序员上午和下午试卷(考试时间 9 : 00~11 : 30 共 150 分钟)1. 在答题卡的指定位置上正确写入你的姓名和准考证号,并用正规2B 铅笔在你写入的准考证号下填涂准考证号。
2. 本试卷的试题中共有 75 个空格,需要全部解答,每个空格 1 分,满分 75 分。
3. 每个空格对应一个序号,有 A、B、C、D 四个选项,请选择一个最恰当的选项作为解答,在答题卡相应序号下填涂该选项。
4. 解答前务必阅读例题和答题卡上的例题填涂样式及填涂注意事项。
解答时用正规 2B 铅笔正确填涂选项,如需修改,请用橡皮擦干净,否则会导致不能正确评分。
例题● 2016 年下半年全国计算机技术与软件专业技术资格(水平)考试日期是(88)月(89)日。
(88)A. 9 B. 10 C. 11 D. 12(89)A. 4 B. 5 C. 6 D. 7因为考试日期是“11 月 4 日”,故(88)选 C,(89)选 A,应在答题卡序号 88 下对 C 填涂,在序号 89 下对 A 填涂(参看答题卡)。
某质量技术监督部门为检测某企业生产的某个批次的化妆品含铅量是否超标,通常宜采用(1)的方法。
(1)A.普查 B.查有无合格证 C.抽样检查 D.查阅有关单据【答案】C【解析】某企业资料室员工张某和王某负责向系统中录入一批图书信息(如:图书编号、书名、作者、出版社,联系方式等信息).要求在保证质量的前提下,尽可能高效率地完成任务。
对于如下:A~D四种工作方式,(2)方式比较恰当。
(2)A.张某独立完成图书信息的录入,王某抽查B.张某独立完成图书信息的录入,王某逐条核对C.张某和王某各录一半图书信息,再交叉逐条核对D.张某和王某分工协作,分别录入图书信息的不同字段,再核对并合并在—起【答案】C在Excel中,假设单元格A1、A2、A3和A4的值分别为23、45、36、18,单元格B1、B2、B3、B4的值分别为29.、38、25、21,在单元格C1中输入“:-SUM(MAX(A1:A4),MIN(B1: B4))”(输入内容不含引号)并按Enter后,C1单元格显示的内容为(3)。
全国计算机技术与软件专业技术资格〔水平〕考试下半年程序员下午试卷〔考试时刻14 : 00~16 : 30 共150分钟〕1.在答题纸的指定位置填写你所在的省、自治区、方案单列市和名称。
2.在答题纸的指定位置填写准考证号、出生年月日和姓名。
3.答题纸上除填写上述内容外只能写解答。
4.本试卷共6道题。
试题一至试题四是必答题目,试题五至试题六选答1道。
每题155.解答时字迹务必清晰,字迹不清时,将不评分。
依照下面例题,将解答写在答题纸对应的栏内。
例题下半年全国计算机技术与软件专业技术资料〔水平〕考试日期是〔1〕月〔2〕日。
因为正确的解答是“11月13日〞,故在答题纸的对应栏内写上“11月13日〞〔参看下表〕。
第2章程序员级下午试题分析与解答试题1阅读以下说明和流程图,将应填入(n) 的字句写在答题纸的对应栏内。
流程图说明下面的流程图描述了对8位二进制整数求补的算法。
该算法的计算过程如下:从二进制数的低位(最右位)开始,依次向高位逐位查看,直到首次遇到“1〞时,停止查看。
然后,对该“1〞位左面的更高位(假设有的话),逐位求反,所得的结果确实是对原二进制数求补的结果。
例如:对二进制整数10101000求补的结果是01011000。
设8位二进制整数中的各位,从低位到高位,依次存放在整型数组BIT的BIT[l]~BIT[8]中。
例如,二进制整数10101000存放在数组BIT后,就有BIT[l]=0,BIT[2]=0,…,BIT[7]=0,BIT[8]=1。
假设流程图中存在空操作,那么用NOP表现。
流程图流程图中(1) 处按“循环变量名:循环初值,增量,循环终值〞格式描述。
试题1分析此题考查的是流程图。
由于题目中给出了对8位二进制整数求补的算法,同时指明将8位二进制整数中的各位,从低位到高位,依次存放在整型数组BIT的BIT[1]~BIT[8]中,因此,循环操纵变量的初值应该为1(从二进制数中的最低位开始)、终值为8(二进制数中的每一位都要检查)、增量为1(每次检查1位),依照“循环变量名:循环初值,增量,循环终值〞格式描述,那么为:i:1,1,8。
2000年度程序员级下午试卷试题一(15分)阅读下列函数说明和 C 代码,将应填入其中__(n)__处的字句写在答卷的对应栏内。
【函数1.1说明】设链表结点的类型为typedef struct elem{ int val;struct elem *next;} intNode;函数 merge(int *a,int *b) 是将两个升序链表 a 和 b 合并成一个升序链表。
【函数1.1】intNode *merge(intNode *a,intNode *b){ intNode *h = a,*p,*q;while(b){ for (p = h; p && p->val<b->val; q = p, p = p->next); if (p == h) __(1)__; else __(2)__;q = b; b = b->next; __(3)__;}return h;}【函数1.2说明】递归函数 dec(int a[],int n) 判断数组 a[] 的前 n 个元素是否是不递增的。
不递增返回 1 ,否则返回 0 。
【函数1.2】int dec(int a[],int n){ if (n <= 1) __(4)__;if (a[0] < a[1]) return 0;return __(5)__;}试题二(18分)阅读下列函数说明和 C 代码,将应填入__(n)__处的字句写在答卷的对应栏内。
【函数2.1说明】设长正整数用数组存储,如有 k 位的长整数m用数组 a[] 存储:m = a[k]*10k-1a[k-1]*10K-2+……+a[2]*101+a[1]*100并用a[0]存储长整数m的位数,即a[0]=k。
通常,存储长整数数组的每个元素只存储长整数的一位数字。
长整数运算时,为了运算方便,产生的中间结果的某位数字可能会大于 9。
这时,就应调用本函数将它规整,使数组的每个元素只存储长整数的一位数字。
规整运算函数 formal(int *a) 就实现这个特殊要求。
【函数2.1】void formal(int *a){ int p;for (p = 1; p < a[0] || a[p] >= 10; p++) {if (p >= a[0] __(1)__;a[p+1]+ = a[p]/10; a[p] = __(2)__;}if (p > a[0]) __(3)__;}【函数2.2说明】函数 combine(a,b,c) 是计算两个整数的组合数。
由于计算结果超出 long int 的表示范围,故用本题【函数2.1说明】的方法存储计算结果。
设整数 a 和 b (a>=b) ,它们的组合 c(a,b) = a!/((a-b)!*b!)。
计算 a 和 b 的组合可采用以下方法:a!/(a-b)!/b!= a*(a-1)*(a-2)*…*(a-b+1)/b!= u1*u2*…*ub/(d1*d2*…*db)其中u1 = a,u2 = a-1,…,ub = a-b+1;d1 = 1,d2 =2 ,…,db = b 。
从而计算 a 和 b 的组合 c(a,b),可变成计算上述分式。
为计算上述分式,先从 u1,u2,…,ub 中去掉所有d1*d2*…*db 的因子,得到新的u1,u2,…,ub。
然后再将它们相乘。
以下函数中调用的外部函数 gcd(a,b) 是求两整数 a和 b 最大公因子的函数;函数 formal() 就是本题中的函数 2.1。
【函数2.2】void combine (int a,int b,int *c){ int i, j, x, k;int d[MAXN],u[MAXN];for (k = 0, i = a; i >= a-b+1; i--) u[++k] = i;__(4)__;for (i = 1; i <= b; i++) d[i] = i; /*将整数 1 至 b顺序存于数组 d */for (i = 1; i <= u[0]; i++) /*从u的各元素中,去掉 d 中整数的所有因子*/if (u[i] != 1)for (j = 1; j <= b; j++)if (__(5)__) {x = gcd(u[i], d[j]); u[i] /= x; d[j] /= x;}c[0] = c[1] = 1; /*长整数c初始化*/for (i = 1; i < = u[0]; i++) /*将 u 中各整数相乘,存于长整数 c */ if (u[i]! = 1){ for (j = 1;j <= c[0]; j++) c[j] = __(6)__;formal(c); /*将存于c中的长整数规整*/}}试题三(21分)阅读下列函数说明和 C 代码,将应填入__(n)__处的字句写在答卷的对应栏内。
【程序3说明】本程序中的函数 expr() 实现将中缀表达式转换成后缀表达式。
设中缀表达式只有加(+)、减(-)、乘(*)和除(/)四则运算符(双目),运算分量只能是变量,变量用英文字母开头英文字母和数字符组成的标识符命名。
与平常四则运算的计算规则相一致,即先乘除,后加减,括号内的子表达式优先计算。
例如,中缀表达式 a*(c3-x2z/y)+u 的后缀表达式为 ac3x2zy/-*u+程序给每个运算符和括号设定一个优先级,并引入一个栈和一个存储后缀表达式的工作数组。
函数 expr() 工作时,按自左至右逐个顺序扫描中缀表达式,如当前符号是变量名,就将该变量名直接复制到工作数组;如当前符号是运算符或括号,将当前符号的优先级和栈顶符号的优先级进行比较;若当前符号的优先级高,则当前符号进栈;反之,则进行出栈处理,并将从栈中退出的运算符依次复制到工作数组中,直到栈顶符号的优先级比当前符号的优先级低为止,然后将当前的运算符或左括号进栈。
为使子表达式能优先处理,所以给左括号设定较高的优先级,但又为了能正确处理随后的子表达式,在左括号进栈时,它在栈中的优先级作了一定的改变。
初始时,expr() 函数预先在栈底设置一个符号'#',其优先级比所有运算符和括号的优先级都低。
程序还检查输入表达式的运算符和运算分量的合理性,以及括号是否正确配对。
【程序3】#include <stdio.h>#include <ctype.h>#include <stdlib.h>typedef struct node { /*符号、内部编号、优先级和后继栈元指针*/ char data; int code;int pri;strujct mode *link;} NODE;struct Tb1 { /*符号、内部编号、优先级*/char data; int ckde ; int pri;} opchTb1[] = {{'*', 1, 4}, {'/', 2, 4}, {'+', 3, 2}, {'-', 4, 2}, {'(', 5, 5}, {')', 6, 1},{'\0', 7, 0}, {' ',-1, 0}}; NODE *optop; /*栈顶指针*/Char num[200], *numtop; /*工作数组和存储指针*/Char expStr[200]; /*存储中缀表达式的字符数组*/Void push(char x, int c, int p, NODE **topt) /*链接存储栈的进栈函数*/{ NODE *q = (NODE *)malloc(sizeof(NODE));q->data = x; q->code = c; q->pri = p; ___(1)___ ; *toppt = q;}int pop(char *op, int *cp, NODE **toppt) /*链接存储栈的出栈函数*/ { NODE q = toppt;if (*toppt == NULL) return 1; /*空栈 */*op = q->data; cp = q->code; ___(2)___ ; free(q); return 0; }int expr(char *pos){ struct Tb1 *op; char sop; int type, code, n, m, i, c;optop = NULL; numtop = num; n = m = 0; c = ' ';push('#', 0, 0, &optop); /*预先在栈中置一个0优先级的符号 */ while (1) { while (c==' '||c == '\t') c = *pos++; /*掠过空白符 */ if (isalpha(c) { /*复制变量名到工作数组*/*numtop++ = ' ';while (isalpha(c)||isdigit(c)) { ___(3)___ ; c = *pos++; } if (m) return 1; /*运算符个数与运算分量个数不相容 */ m = 1; /*运算分量比运算符多1 个 */continue;} else { /*处理运算符或非法字符 */for (i = 0; opchTb1[i].code != -1 && ___(4)___ ; i++) if (opchTb1[i].code == -1) return 3; /*非法字符 */op = &opchTbl[i];type = opchTbl[i].code; /*得到运算符的内部码 */c = *pos++; /*C 中存储下一个字符*/}if (type < 5) { /*如是运算符 */if(m != 1) return 1; /*运算符个数与运算分量个数不相容*/ m = 0; /*运算符与运算分量一样多 */}if (type == 5) n++; /*左括号计数增1*/if (type == 6) { if (n-- == 0) return 2; /*圆括号不匹配*/if ( ___(5)___ ) /*运算符或括号进栈 */if (op->data == '(' ) push(op->code, 1, &optop);else push(op->data, op->code, op->pri, &optop); else { while (optop != NULL && op->pri <= optop->pri) {pop( ___(6)___ );if ( ___(7)___ ) { /* 运算符复制到工作数组*/*numtop++ = ' '; *numtop++ = stop;}}if (op->data=='0')return(n!=0||(m!=1&&numtop>num))?4( *numtop='\0');else if(op->data!=')')push (op->data, op->code, op->pri,&optop);}}}void main(){ int d;printf("请输入表达式 !\n"); gets(expStr);if ((d = expr(expStr)) == 0) printf("后缀表达式为 %s\n",num); else printf("表达式句法错!错误类型为%d\n",d);}试题四(21分)阅读下列程序说明和C代码,将应填入 ___(n)___ 处的字句写在答卷的对应栏内。