题目内容 (请给出正确答案)

请在以下5题中任选1题完成,并提交程序代码: 题目1: 算术表达式从中缀式翻译成后缀式的程序实现 题目2:将算术表达式转换成抽象语法树的程序实现 题目3:将算术表达式转换成 DAG 的 程序实现 题目4:将算术表达式转换成三元式的程序实现 题目5:将算术表达式转换成四元式的程序实现

暂无答案
您可能会需要:
更多“请在以下5题中任选1题完成,并提…”相关的问题

第1题

阅读以下说明和流程图(如图1所示),回答问题1至问题4。

【说明】
本流程图是将中缀表示的算术表达式转换成后缀表示。如中缀表达式
(A-(B*C+D)*E)/(F+G))
的后缀表示为
ABC*D+E*-FG+/
为了方便,假定变量名为单个英文字母,运算符只有+、-、*、/(均为双目运算符,左结合),并假定所提供的算术表达是非空且语法是正确的。另外,中缀表示形式中无空格符,但整个算术表达式以空格符结束。流程图中使用的符号的意义如下:
数组 IN[]存储中缀表达式;
数组 POLISH[]存储其后缀表达式;
数组 S[]是一个后进先出栈;
函数PRIOR(CHAR)返回符号CHAR的优先级,各符号的优先级见表2:

填充流程图中①的判断条件。


请帮忙给出正确答案和分析,谢谢!
点击查看答案

第2题

if(表达式){}这段代码在程序中的表达式可以出现的形式为()。

A、算术表达式

B、关系表达式

C、逻辑表达式

D、数值0或1


此题为多项选择题。请帮忙给出正确答案和分析,谢谢!


点击查看答案

第3题

●试题一
阅读以下说明和流程图(如图1所示),回答问题1至问题4,将答案写在答卷的对应栏内。
【说明】
本流程图是将中缀表示的算术表达式转换成后缀表示。如中缀表达式
(A-(B*C+D)*E)/(F+G))
的后缀表示为
ABC*D+E*-FG+/
为了方便,假定变量名为单个英文字母,运算符只有+、-、*、/(均为双目运算符,左结合),并假定所提供的算术表达是非空且语法是正确的。另外,中缀表示形式中无空格符,但整个算术表达式以空格符结束。流程图中使用的符号的意义如下:
数组IN[]存储中缀表达式;
数组POLISH[]存储其后缀表达式;
数组S[]是一个后进先出栈;
函数PRIOR(CHAR)返回符号CHAR的优先级,各符号的优先级见表2:

【问题1】
填充流程图中①的判断条件。
【问题2】
写出子程序A的功能,并顺序写出实现该功能的操作
【问题3】
写出子程序B的功能,并顺序写出实现该功能的操作。
【问题4】
中缀表达式
(A+B-C*D)*(E-F)/G
经该流程图处理后的输出是什么?
【流程图】

图1



请帮忙给出正确答案和分析,谢谢!
点击查看答案

第4题

请教:2013年全国计算机等级《二级VB》考前冲刺试卷(4)第1大题第5小题如何解答?
【题目描述】
在表达式2+3*4^5.Sin(x+1)/2中,首先进行的运算是(  )。A.4 ^ 5   
B.3*4   
C.x+1
D.Sin
【我提交的答案】: A
【参考答案与解析】:
正确答案:C
答案分析:
c)    【解析】本题考查表达式的优先级。题目中表达式的优先级最高的是函数调用,先进行函数运算,接下来由高到低依次为算术运算符、字符运算符、关系运算符、逻辑运算符。算术运算符的优先级从高创低为:^-,*/,+-,因此首先进行的运算是(x+1)。

点击查看答案

第5题

请教:2013年全国计算机等级考试《二级Access》考前预测试卷(一)第1大题第16小题如何解答?
【题目描述】
以下程序段运行后,消息框的输出结果是(  )。

A. -1
B. 0
C. 1
D. 2
【我提交的答案】: C
【参考答案与解析】:
正确答案:B
答案分析:
本题考查VBA中表达式运算的知识。在 VBA中允许逻辑量进行算术运算。True处理成-1,Fa1se处理成0。


点击查看答案

第6题

【单选题】(单选题)根据算术平均数的性质,下列表达式正确的是( )。

A、

B、

C、

D、

点击查看答案

第7题

请教:2011年上半年软考程序员下午试题(标准答案版)第1大题第4小题如何解答?

【题目描述】
试题四(共15分)
阅读以下说明和C函数,填补C函数中的空缺(1)~(5),将解答写在答题纸的对应栏内。
【说明】
假设一个算术表达式中可以包含以下三种括号:“(”和“)”、"[”和“]”、“{”和“}”,并且这三种括号可以按照任意的次序嵌套使用。
下面仅考虑表达式中括号的匹配关系,其他问题暂时忽略。例如,表达式“[a.(b.5)]*c[{}]”中的括号是完全匹配的,而表达式“[a-(b-5]))*c”中的括号不是完全匹配的,因为“(”与“]”不能匹配,而且多了一个“)”,即缺少一个与“)”相匹配的“(”。 函数ifmatched (char expr[])的功能是用栈来判断表达式中的括号是否匹配,表达式以字符串的形式存储在字符数组expr中。若表达式中的括号完全匹配,则该函数的返回值为Matched,否则返回值为Mismatched。
该函数的处理思路如下:
(1)设置一个初始为空的栈,从左至右扫描表达式。
(2)若遇上左括号,则令其入栈;若遇上右括号,则需要与栈顶的左括号进行匹配。
(3)若所遇到的右括号能与栈顶的左括号配对,则令栈顶的左括号出栈,然后继续匹配过程;否则返回Mismatched,结束判断过程。
(4)若表达式扫描结束,同时栈变为空,则说明表达式中的括号能完全匹配,返回Matched。  函数ifMatched中用到了两种用户自定义数据类型BOOL 和STACK,其中,BOOL类型的定义如下:
typedef enum  {Mismatched, Matched}BOOL;
 
STACK(即栈类型)的定义省略,栈的基本操作的函数原型说明如下:
void InitStack(STACK *S):初始化一个空栈。
void Push(STACK *S,char e):将一个字符压栈,栈中元素数目增1。
void Pop(STACK *S):栈顶元素出栈,栈中元素数目减1。
char Top(STACK S):返回非空栈S的栈顶元素值,栈中元素数目不变。
int IsEmpty(STACK S):若S是空栈,则返回1,否则返回0。
 

【我提交的答案】:(1)cptr++ (2)Push(&S,*cptr) (3)Top(STACK S) (4)Pop(STACK *S) (5)IsEmpty(STACK S)
【参考答案分析】:试题四参考答案(共 15分)
(1) cptr++或++cptr   或cptr +=1   或cptr = cptr+1   (3分)
(2) Push(&S,*cptr)    (3 分)
(3) Top(S)     (3分)
(4)Pop(&S)     (3分)
(5) Is Empty(S)     (3分)
【我的疑问】(如下,请求专家帮助解答)

老师,我第二题的答案写成:Push(STACK *S,*cptr),这样写对吗?会给分吗?我第三题写成:Top(STACK S),这样写对吗?会给分吗?

点击查看答案

第8题

实现简单算术表达式的求值问题,能够进行加、减、乘、除和乘方运算。使用时算式采用后缀输入法,例如,若要计算“3+5”则输入3 5+;乘方运算符用“^”表示;每次运算在上一次运算结果的基础上进行。
   算法分析:表达式求值是程序设计语言编译中的一个最基本的问题。它的实现方法是栈的一个典型的应用实例。在计算机中,任何一个表达式都是由操作数(operand)、运算符(operator)和界限符(delimiter)组成的。其中操作数可以是常数,也可以是变量或常量的标识符;运算符可以是算术运算符、关系运算符和逻辑运算符;界限符为左右括号和标识表达式结束的结束符。
点击查看答案

第9题

试题四(共 15 分)
阅读以下说明和 C 函数,将应填入 (n) 处的字句写在答题纸的对应栏内。
[说明]
计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式
“46+5*(120-37)”的后缀表达式形式为“46 5 120 37 - * +” 。
计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇到运算符,则从栈中弹出相关运算对象进行计算,并将运算结果压入栈中,重复以上过程,直到后缀表达式扫描结束。例如,后缀表达式“46 5 120 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(STACK s):若s 是空栈,则返回1 否则返回 0。
[C 函数]
int computing(char expr[], int *result)
{
STACK s; int tnum, a,b; char *ptr;
InitStack(&s);
ptr = expr; /*字符指针指向后缀表达式串的第一个字符*/
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;
}
}


请帮忙给出正确答案和分析,谢谢!
点击查看答案

第10题

阅读以下说明和流程图,回答问题1~2,将解答填入答题纸对应的解答栏内。
[说明]
给定一个十进制整数A,将其转换为R进制数的方法是:将A的整数部分逐次除以R,直到商等于0为止,将所得的余数由低位到高位排列在一起,就得到了对应R的进制数。以A=11,R=2为例,11÷2=5…1,5÷2=2…1,2÷2=1…0,1÷2=0…1中各式的余数依次为:1,1,0,1,于是与A对应的二进制数为1011。
下面的流程图实现了将十进制数2597转换为八进制数的功能,其中:
(1)循环1执行除法运算并将余数依次记录在数组a中(假定数组长度足够长),如a[1], a[2],……,a[k];
(2)循环2则用于将这些余数按逆序输出,即a[k],a[k-1],……,a[1];
(3)图中i,j分别是循环1和循环2中的循环变量;
(4)图中q用于记录每次除法所得的商值。
[流程图]

[问题1]
将流程图中的(1)~(4)处补充完整,其中(1)~(3)处要求使用C语言格式书写:(1)处为逻辑表达式,(2)、(3)两处为算术表达式;(4)则须按照“循环变量名:循环初值,循环终值,增量”格式描述。
[问题2]该算法运行的结果(5)。


请帮忙给出正确答案和分析,谢谢!
点击查看答案
热门考试 全部 >
找答案
账号:
你好,尊敬的上学吧用户
粘贴 取消
搜索
如搜索结果不匹配,请 联系老师上传试题 获取答案
发送账号至手机
看不清?点击更换
发送
谢谢您的反馈

您认为本题答案有误,我们将认真、仔细核查,
如果您知道正确答案,欢迎您来纠错

警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

微信搜一搜
上学吧
点击打开微信
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反上学吧会员政策被冻结。您可在“上学吧”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
微信搜一搜
上学吧
点击打开微信
温馨提示

您的免费查看次数已用完,

需要开通会员才能继续使用。

马上开通会员 我已开通会员,登录会员账号继续查看答案
重置密码
确认修改