首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
[说明] 计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为“46 5 120 37- * +”。 计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇到运算符,
[说明] 计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为“46 5 120 37- * +”。 计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇到运算符,
admin
2012-04-11
40
问题
[说明]
计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为“46 5 120 37- * +”。
计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇到运算符,则从栈中弹出相关运算对象进行计算,并将运算结果压入栈中。重复以上过程,直到后缀表达式扫描结束。例如,后缀表达式“46 5 120 37 - * +”的汁算过程如下。
①依次将46、5、120、37压入栈中。
②遇到“-”,取出37、120,计算120-37=83,将其压入栈中。
③遇到“*”,取出83、5,计算5×83=415,将其压入栈中。
④遇到“+”,取出415、46,计算46+415=461,将其压入栈中。
⑤表达式结束,则计算过程完成。
函数computing(char expt[],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(STACK s):若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;
}
}
选项
答案
ptr++,或++ptr,或ptr=ptr+1,或其等价表示 0,或tnum=0 *ptr-48,或*ptr-‘0’,或其等价表示 &s,tnum *result
解析
由于后缀表达式以字符串方式存储且以空格分隔符号(数值、运算符),因此遇到空格字符时,指向表达式中字符的指针ptr应增加1指向后续字符,所以(1)处应填入“ptr++”或其等价形式。tnum的初始值应为0,因此,空(2)处应填入“0”,空(3)所在表达式将数字字符转换为数值,即空(3)处填入“*ptr-48”。空(4)处用于将转换所得的数值tnum压入栈项,根据题目中Push的原型“void Push(STACK*s, int e)”,调用时第一个实际参数是STACK类型变量的地址,第二个实际参数是一个整数,因此,空(4)处填入“&s, tnum”。由于函数computing(char expr[], int *result)通过参数result返回该表达式的值,因此需要将存在栈顶的运算结果赋值给result指向的整型变量,即空(5)处填入“*result”。
转载请注明原文地址:https://kaotiyun.com/show/HEVZ777K
本试题收录于:
程序员上午基础知识考试题库软考初级分类
0
程序员上午基础知识考试
软考初级
相关试题推荐
虚拟存储技术的基本思想是利用大容量的外存来扩充内存,产生一个比实际内存大得多的虚拟内存空间。引入它的前提是(11)。 Ⅰ.程序局部性原理 Ⅱ.时间局部性原理 Ⅲ.空间局部性原理 Ⅳ.数据局部性原理
在如图1-3所示的进程状态转换图中,序号①、②、③的位置应分别填入(55)。
在某单CPU的计算机系统中,采用可抢占优先级的任务调度方案,且所有任务可以并行使用I/O通道。内存中有A1、A2两个任务,按照A1、A2的次序运行,其内部计算和I/O操作时间见表1-1。
借用某个C类IP地址的3位主机号部分划分子网,那么子网掩码应该是(31)。
在Word的编辑状态,不能完成删除整个表格(及其内容)任务的操作是(14)。
“违反国家规定,侵入国家事务、国防建设、尖端科学领域的计算机信息系统的,处三年以下有期徒刑或者拘役。”这法规出自(40)。
以太网策略中有3种监听方法,其中一种是,一旦“介质空闲就发送数据,假如介质忙,继续监听,直到介质空闲后立即发送数据”,这种算法称为(31)监听算法。这种算法的主要特点是(32)。 CSMA/CD协议具有:中突检测功能,网络中的站点一旦检测到>中突,就立即停
假设微处理器的主振频率为50MHz,两个时钟周期组成一个机器周期,平均三个机器周期完成一条指令,则它的机器周期是(11),平均运算速度约为(12)MIPS。
在数据通信中,使用编码方法为:将每个码元分为两个相等的间隔,码元l的前半部分为高电平,而后半部分为低电平,码元0在和码元1相反。这中编码方法为(35)。
随机试题
A为出票人,因货物买卖而签发了自己为付款人的汇票与B。依双方的约定,在B交货的同时,A承兑自己签发的汇票。后A、B就货物质量纠纷诉诸法院。诉讼期间,B又将本案所涉汇票背书给知情的C。什么是票据抗辩?
瞳孔括约肌和开大肌发育来源于
下列哪些是腹膜透析的相对禁忌证
术中体温升高对机体的影响有()。
工业企业中的小型企业从业人员在______人以下,销售额在______万元以下,资产总额在______万元以下。()
西北某地,由国家和民营企业共同兴建的某大型炼钢厂。起初,建设单位拟定由中央直属的一家冶金建设公司总承包该项目工程,遭到当地监管部门的反对。建设单位招标投标过程中发生了下列事件:事件一:工程采用PC承包形式进行招标,有个别单位不明白PC承
某企业从事某项投资活动的年投资收益率为10%。现有两个投资方案如下:甲方案:第一年缴纳企业所得税100万元的概率为20%,纳税150万元的概率为50%,纳税180万元的概率为30%;第二年纳税120万元的概率为40%,纳税160万元的概率为40%
以下各选项中,属于中央银行资产的包括( )。
卜算子.咏梅陆游驿外断桥边,寂寞开无主。已是黄昏独自愁,更著风和雨。无意苦争春,一任群芳妒。零落成泥碾作尘,只有香如故。赏析这苜词中梅花的形象。
能力的层次结构理论是()提出的。
最新回复
(
0
)