小学整数四则运算简便计算题,C语言表达式的求解规则,C语言实现整数四则运算表达式的计算

 2023-09-25 阅读 16 评论 0

摘要:一、问题重述小学整数四则运算简便计算题、【问题描述】从标准输入中读入一个整数算术运算表达式,如5 - 1 * 2 * 3 + 12 / 2 / 2 =。计算表达式结果,并输出。整数四则运算100题,要求:1、表达式运算符只有+、-、*、/,表达式末尾的’&

一、问题重述

小学整数四则运算简便计算题、【问题描述】

从标准输入中读入一个整数算术运算表达式,如5 - 1 * 2 * 3 + 12 / 2 / 2  = 。计算表达式结果,并输出。

整数四则运算100题,要求:

1、表达式运算符只有+、-、*、/,表达式末尾的’=’字符表示表达式输入结束,表达式中可能会出现空格;

表达式运算,2、表达式中不含圆括号,不会出现错误的表达式;

3、出现除号/时,以整数相除进行运算,结果仍为整数,例如:5/3结果应为1。

【输入形式】

在控制台中输入一个以’=’结尾的整数算术运算表达式。

【输出形式】

向控制台输出计算结果(为整数)。

【样例1输入】

5 - 1 * 2 * 3 + 12 / 2 / 2  =

【样例1输出】

2

【样例2输入】

500 =

【样例2输出】

500

【样例1说明】

输入的表达式为5 - 1 * 2 * 3 + 12 / 2 / 2 =,按照整数运算规则,计算结果为2,故输出2。

【样例2说明】

输入的表达式为500 = ,没有运算符参与运算,故直接输出500。

算法之一提示:

1、可以利用gets函数,读取整行表达式;

2、对于空格,可以考虑首先去除表达式中的所有空格

3、可以设一计数器用来记录已读取、但未参加运算的运算符的个数,根据该计数器来判断如何进行运算;

4、可以设计一函数:实现二元整数算术运算。

【评分标准】

该题要求输出整数表达式的计算结果,共有5个测试点。上传C语言文件名为example1c.c。

二、算法概述

这里提供一个我的老师提过的一个算法,概括来说就是:从左向右依次运算,遇到乘除就先算乘除。下面用一个例子来解释:

5 - 1 * 2 * 3 + 12 / 2 / 2  =

1.该等式等价于0+5 - 1 * 2 * 3 + 12 / 2 / 2  = ,所以我们先设a1=0 , op1=+

2.读取数据a2=5 , op2=-

3.a1=a1+a2=5 , op1=op2=-,读取a2=1 , op2=*

4.因为op2是*,所以我们继续读取后面的数据把它计算完,a3=2 , op3=*

5.计算a2=a2*a3,并令op2=op3,继续如此计算直到读到加减或者等号

6.计算完第一个连乘,此时a1=5,op1=-,a2=6,op2=+

7.计算op1所在的运算,a1=-1,op1=+

8.后面的操作类似,就不多说了

这个算法的关键技巧,我认为是每次读取一个数字和一个运算符。

三、C语言实现

#include

#include

#include

#include

int main()

{

int a1,a2,a3;

char op1,op2,op3;

//为了保证结构,在最开始加上一个0+

a1 = 0;

op1 = '+';

while(op1!='=')

{

scanf("%d %c",&a2,&op2); //这里用一个空格来忽略空白符

//计算乘除

while(op2=='*' || op2=='/')

{

scanf("%d %c",&a3,&op3);

if(op2=='*')

a2 *= a3;

else if(op2=='/')

a2 /= a3;

op2 = op3; //此处注意

}

//将两项相加(减)

if(op1=='+')

a1 += a2;

else if(op1=='-')

a1 -= a2;

op1 = op2; //此处注意

}

printf("%d",a1);

return 0;

}

四、思路拓展

关于运算的顺序还可以用栈来维护,通过建立运算符优先级表来决定入栈和出栈顺序,从而控制运算顺序。同学们可以尝试一下,如果允许括号运算该如何处理?如何把中缀表达式改为前缀或后缀的?

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/95437.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息