编程学习网 > 编程语言 > C/C++开发 > C语言实现整数四则运算表达式的计算(c语言编写整数四则运算)
2022
12-16

C语言实现整数四则运算表达式的计算(c语言编写整数四则运算)

今天编程学习网为大家讲解C语言实现整数四则运算表达式的计算,有需要的小伙伴可以参考一下:

一、问题重述

【问题描述】
从标准输入中读入一个整数算术运算表达式,如5 - 1 * 2 * 3 + 12 / 2 / 2  = 。计算表达式结果,并输出。
要求:
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 <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
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;

}

以上就是“C语言实现整数四则运算表达式的计算”的详细内容,想要了解更多C语言教程欢迎持续关注编程学习网

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取