首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为“46 512037-*+”。 计算后缀表达式时,从
阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为“46 512037-*+”。 计算后缀表达式时,从
admin
2009-05-15
53
问题
阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为“46 512037-*+”。
计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇,到运算符,则从栈中弹出相关运算对象进行计算,并将运算结果压入栈中。重复以上过程,直到后缀表达式扫描结束。例如,后缀表达式“46 5120 37-*+”的计算过程如下。
a.依次将46、5、120、37压入栈中;
b.遇到“-”,取出37、120,计算120-37=83,将其压入栈中:
c.遇到“*”,取出83、5,计算5×83=415,将其压入栈中;
d.遇到“+”,取出415、46,计算46+415=461,将其压入栈中;
e.表达式结束,则计算过程完成。
函数computing(char expr[],int *result)的功能是基于栈计算后缀形式的表达式(以串形式存入字符数组expr)的值,并通过参数result返回该值。函数的返回值为-1/0,分别表示表达式有/无错误。假设表达式中仅包含数字、空格和算术运算符号,其中所有项均以空格分隔,且运算符仅包含加(“+”)、减(“-”)、乘(“*”)、除(“\”)。
函数computing中所用栈的基本操作的函数原型说明如下。
. void InitStack(STACK *s):初始化栈。
. void Push(STACK,s,int e):将一个整数压栈,栈中元素数目增1。
. void Pop(STACK *s):栈顶元素出栈,栈中元素数目减1。
. int Top(STACK s):返回非空栈的栈顶元素值,栈中元素数目不变。
. int IsEmpty(STACKs):若s是空栈,则返回1;否则返回0。
【C函数】
int computing (char expr[],int *result)
{
STACK s; int tnum,a,b; char *ptr;
InitStack(&s);
ptr=expr;pstr /*字符指针指向后缀表达式串的第一个字符*/
while(*ptr!=’\0’) {
if(*ptr==’ ’) { /*当前字符是空格*/
(1); /*字符指针指向下一字符*/
continue;
}
else
if(isdigit (*ptr)) {
/*当前字符是数字,则将该数字开始的数字串转换为数值*/
tnum=(2);
while (*ptr>=’0’ && *ptr <=’9’) {
tnum=tnum * 10 +(3);
ptr++;
}
Push((4));
}
else /*当前字符是运算符或其他符号*/
if (*ptr==’+’||*ptr==’-’||*ptr==’*’||*ptr==’/’){
if(!IsEmpty(s)) {
a=Top(s);Pop(&s); /*取运算符的第二个运算数*/
if(!IsEmpty(s)) {
b=Top(s);Pop(&s);/*取运算符的第一个运算数*/
}
else return -1;
}
else return -1;
switch (*ptr) {
case ’+’: Push(&s,b+a); break;
case ’-’:Push(&s,b-a); break;
case ’*’:Push(&s,b*a); break;
case ’/’:Push(&s,b/a); break;
}
}
else
return -1;
ptr++; /*字符指针指向下一字符*/
}/*while*/
if(IsEmpty(s)) return -1;
else{
(5)=Top(s); Pop(&s); /*取运算结果*/
if(!IsEmpty(s)) return -1;
return 0;
}
}
选项
答案
(1)ptr++,或++ptr,或ptr=ptr+1,或其等价表示 (2)0,或tnum=0 (3)*ptr-’0’,或*ptr-48,或其等价表示 (4)&s,tnum (5)*result
解析
本题考查栈结构在后缀表达式求值过程中的应用。
利用栈计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇到运算符,则从栈中弹出对应数目的运算对象进行计算,并将运算结果压入栈中。重复以上过程,直到后缀表达式扫描结束,最后栈顶就是表达式的计算结果。
根据题目的说明,由于后缀表达式以字符串方式存储且以空格分隔符号(数值、算符),因此遇到空格字符时,指向表达式中字符的指针ptr应增加1指向后续字符,因此,空(1)处应填入“ptr++”或其等价形式。
下面以字符串“375”为例说明将一个数字串转换为数值的过程。
数值375=((0×10+3)×10+7)×10+5
(1)取得数字字符“3”(ASCII码值为51,字符0的ASCII码值为48)。
mum=0*10+51-48=3;
(2)取得数字字符“7” (ASCII码值为55)。
tnum=3*10+55-48=37;
(3)取得数字字符“5” (ASCII码值为53)。
tnum=37*10+53-48=375;
以下代码用于将一个数字字符串转换为对应的整数存入tnum,显然,tnum的初始值应为0。
tnum= (2) ;
while (*ptr>=’0’ && *ptr <=’9’) {
tnum=tnum*10+ (3) ;
ptr++;
}
因此,空(2)处应填入“0”,空(3)所在表达式将数字字符转换为数值,即空(3)处填入“*ptr-48”。
空(4)处用于将转换所得的数值tnum压入栈顶,根据题目中Push的原型“void Push(STACK *s,int e)”,调用时第一个实际参数是STACK类型变量的地址,第二个实际参数是一个整数,因此,空(4)处填入“&s,tnum”。
由于函数computing(ckar expr[],int *result)通过参数result返回该表达式的值,因此需要将存在栈顶的运算结果赋值给result指向的整型变量,即空(5)处填入“*result”。
该题目还考查了参数传递知识,因此考生应通过上机实践加强基本概念的理解和程序设计能力的培养。
转载请注明原文地址:https://jikaoti.com/ti/ykW7FFFM
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
某地区对高二学生举行了一次数学统考,并按“成绩-人数”绘制了分布曲线。考试成绩呈(12)________________,分布比较合理。
数据处理过程中,影响数据精度的因素不包括(10)________________。
信息技术对传统教育方式带来了深刻的变化。以下叙述中,不正确的是(3)________________。
目前最常见的用户界面是________________。
《数据中心设计规范》GB50174-2017属于()。
某地区去年粮食产量资料如下表:根据该表可以推算出,该地区去年薯类的产量为()万吨。
在Excel2003中,A1到E6单元格的值如下图所示,若在A7单元格中输入计算众数的函数“=MODE(A1:E6)”,按回车键后,则.A7单元格显示的值为(47)。
某演示文稿在演示时,需要从第一张幻灯片直接跳转到第五张幻灯片,那么,应在第一张幻灯片上添加(56),并对其进行相关设置。
内存用于存放计算机运行时的指令、程序、需处理的数据和运行结果。但是,存储在(2)中的内容是不能用指令修改的。
阅读下列说明和HTML文本,分析其中嵌入的JavaScript脚本,将应填入(n)处的语句填到对应栏内。[说明]在文本框中实现时钟显示功能,格式如下:“-年-月-日小时:分:秒星期几”[HTML文本]<html>
随机试题
根据《民事诉讼法》的规定,父母为无民事行为能力的未成年子女代为诉讼的,不需要向人民法院提交授权委托书,只需要提交身份证明即可。监护人的这种代理行为属于()。
一般来说,社会工作的介入系统可以分为()。
有印度“小说之王”赞誉的是
某监理单位承担了一工业项目的施工监理工作。经过招标,建设单位选择了甲、乙施工单位分别承担A、B标段工程的施工,并按照《建设工程施工合同(示范文本)》分别和甲、乙施工单位签订了施工合同。建设单位与乙施工单位在合同中约定,B标段所需的部分设备由建设单位负责采购
根据《公司法》,我国的上市公司是指()。
某市化工企业为增值税一般纳税人,主要业务为生产化妆品。2013年有关生产经营情况如下:(1)外购原材料取得增值税专用发票,支付价款2400元,增值税额408万元,发票已通过认证。(2)销售自产成套化妆品25万件,开具增值税专用发票,取
2014年6月26日,针对越南外交部记者会中播放大陆船只围堵、以高压水炮喷洒与撞击越方KN951号渔检船的视频并指控中方“公然侵犯越南海域”和“威胁地区和平”,中国国防部发言人杨宇军在例行记者会上回应称,此事件由个别国家所挑起,责任不在中方,如果有国家一
在SQLSELECT语句中与INTOTABLE等价的短语是()。
若有定义:intx[10],*pt=x;,则对x数组元素的正确引用是()。
Ofalltheareasoflearningthemostimportantisthedevelopmentofattitudes.Emotionalreactionsaswellaslogicalthought
最新回复
(
0
)