题目详情
当前位置:首页 > 计算机考试 > 初级程序员
题目详情:
发布时间:2023-10-31 00:52:08

[单项选择]

可以用栈来检查算术表达式中的括号是否匹配。分析算术表达式时,初始栈为空,从左到右扫描字符,遇到字符“(”就将其入栈,遇到“)”就执行出栈操作。对算术表达式“(a+b*(a+b))/c)+(a+b)”,检查时,();对算术表达式“((a+b/(a+b)-c/a)/b”,检查时,()。这两种情况都表明所检查的算术表达式括号不匹配。
 

对算术表达式“((a+b/(a+b)-c/a)/b”,检查时,()表明所检查的算术表达式括号不匹配。


A. 栈为空却要进行出栈操作
B. 栈已满却要进行入栈操作
C. 表达式处理已结束,栈中仍留有字符“(”
D. 表达式处理已结束,栈中仍留有字符“)”

更多"可以用栈来检查算术表达式中的括号是否匹配。分析算术表达式时,初始栈为空"的相关试题:

[单项选择]

可以用栈来检查算术表达式中的括号是否匹配。分析算术表达式时,初始栈为空,从左到右扫描字符,遇到字符“(”就将其入栈,遇到“)”就执行出栈操作。对算术表达式“(a+b*(a+b))/c)+(a+b)”,检查时,();对算术表达式“((a+b/(a+b)-c/a)/b”,检查时,()。这两种情况都表明所检查的算术表达式括号不匹配。

对算术表达式“(a+b*(a+b))/c)+(a+b)”,检查时,();表明所检查的算术表达式括号不匹配。


A. 栈为空却要进行出栈操作
B. 栈已满却要进行入栈操作
C. 表达式处理已结束,栈中仍留有字符“(”
D. 表达式处理已结束,栈中仍留有字符“)”
[单项选择]表达式中括号不匹配错误可在编译程序______阶段检查出来。
A. 词法分析
B. 语法分析
C. 语义分析
D. 代码优化
[简答题]【说明】
算法2-1是用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如下所示:
文件 提示信息
(1+2)
abc) 缺少对应左括号:第2行,第4列
((def)gx) 缺少对应左括号:第3行,第10列
(((h)
ij)(k
(1ml) 缺少对应右括号:第5行,第4列;第4行,第1列
在算法2-1中,stack为一整数栈。算法中各函数的说明见表4。
表4
函数名
函数功能
push (int i) 将整数i压人栈stack中
pop( ) stack的栈顶元素出栈
empty( ) 判断stack栈是否为空。若为空,函数返回1,否则函数返回0
nextch( ) 读取文本文件中的下—个字符,井返回该字符的ASCII值,将字
符所在的行号以及字符在行中的位置分别存储到变量row和col
[单项选择]

算术表达式采用逆波兰式表示时不用括号,可以利用 (1) 进行求值。与逆波兰式ab-cd+*对应的中缀表达式是 (2)

(1)处填()。
A. 数组
B. 栈
C. 队列
D. 散列表
[单项选择]如果一个表达式中包含:括号、逻辑运算、关系运算、算术运算,那么这些运算的先后顺序为()。
A. 括号、逻辑运算、关系运算、算术运算
B. 括号、算术运算、关系运算、逻辑运算
C. 括号、算术运算、逻辑运算、关系运算
D. 逻辑运算、关系运算、算术运算、括号
[单项选择]在下面的应用中,通常使用栈的是( )。
Ⅰ递归调用 Ⅱ括号匹配 Ⅲ表达式求值
A. Ⅰ、Ⅱ
B. Ⅱ、Ⅲ
C. Ⅰ、Ⅲ
D. Ⅰ、Ⅱ、Ⅲ
[简答题]【说明】 计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“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==’ ’) { /*当前字符是空格*/
[填空题]switch 后面括号中的表达式只能是整型、 【8】 或枚举型表达式。
[填空题]switch后面括号中的表达式只能是整型、______ 或枚举型表达式。
[单项选择]在C程序中,若表达式中的算术运算对象类型不同,则需要先统一为相同类型后再进行计算。例如,表达式“a-b”中,若a是双精度浮点型变量,b是整型变量,为了尽可能保证运算精度,通常进行的处理是()
A. 读取b的值并转换为双精度浮点型数据,然后进行两个浮点数的相减运算,变量b的值不变
B. 读取a的值并转换为整型数据,然后进行两个整数的相加减运算,变量a的值不变
C. 将b重新定义为双精度浮点型变量(其值自动转换为双精度型数据),再进行两个浮点数的相减运算
D. 将a重新定义为整型变量(其值自动转换为整型数据),再进行两个整数的相减运算
[简答题]【说明】
本流程图是将中缀表示的算术表达式转换成后缀表示。如中缀表达式
(A-(B*C+D)*E)/(F+G))
的后缀表示为
ABC*D+E*-FG+/
为了方便,假定变量名为单个英文字母,运算符只有+、-、*、/(均为双目运算符,左结合),并假定所提供的算术表达是非空且语法是正确的。另外,中缀表示形式中无空格符,但整个算术表达式以空格符结束。流程图中使用的符号的意义如下:
数组 IN[]存储中缀表达式;
数组 POLISH[]存储其后缀表达式;
数组 S[]是一个后进先出栈;
函数PRIOR(CHAR)返回符号CHAR的优先级,各符号的优先级见表2:
表2
CHAR
PRIOR(XHAR)
*/
+ -
(
)
4
3
2
1

【问题1】
填充流程图中①的判断条件。
[单项选择]算术表达式a+(b-c)*d的后缀式是()。(-、+、*表示算术的减、加、乘运算,运算符的优先级和结合性遵循惯例)
A. bc-d*a+
B. abc-d*+
C. ab+c-d*
D. abcd-*+

我来回答:

购买搜题卡查看答案
[会员特权] 开通VIP, 查看 全部题目答案
[会员特权] 享免全部广告特权
推荐91天
¥36.8
¥80元
31天
¥20.8
¥40元
365天
¥88.8
¥188元
请选择支付方式
  • 微信支付
  • 支付宝支付
点击支付即表示同意并接受了《购买须知》
立即支付 系统将自动为您注册账号
请使用微信扫码支付

订单号:

请不要关闭本页面,支付完成后请点击【支付完成】按钮
  • 支付完成
  • 取消支付
恭喜您,购买搜题卡成功
重要提示:请拍照或截图保存账号密码!
我要搜题网官网:https://www.woyaosouti.com
我已记住账号密码