题目内容 (请给出正确答案)
[主观题]

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

暂无答案
如搜索结果不匹配,请 联系老师 获取答案
您可能会需要:
您的账号:,可能会需要:
您的账号:
发送账号密码至手机
发送
更多“请在以下5题中任选1题完成,并提交程序代码: 题目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)。

点击查看答案
热门考试 全部 >
相关试卷 全部 >
账号:
你好,尊敬的上学吧用户
发送账号至手机
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改
谢谢您的反馈

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

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

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

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