简单表达式求值(只有+ *)

题目如下:

输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号,所有参与运算的数字均为 0 到 2 ^ 31 -1 之间的整数。输入数据保证这一行只有 0~ 9、+、*这 12 种字符。
输出格式:
输出只有一行,包含一个整数,表示这个表达式的值。注意:当答案长度多于 4 位时,请只输出最后 4 位,前导 0 不输出。

来自大佬的一份代码。

很好的地方是,读取一整串代码的时候,将其分开比较。结果只输出最后四位,对10000取模。

认真学习~

代码如下:

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int mod = 10000;
int main(){
    int sum = 0, a = 0;
    char ch = '!';//初始化任意东西 
    while(1)
    {
        if(ch == '\n')
             break;
        a = 0;
        ch = getchar();
        while(ch >= '0' && ch <= '9')//为数字的话 
        {
            a = a * 10 + ch - '0';
            ch = getchar();//判断下一个是否为数字 
        }
        while(ch == '*')
        {
            int b = 0;
            ch = getchar();//判断乘号后面的数字 
            while(ch >= '0' && ch <= '9')
            {
                b = b * 10 + ch - '0';
                ch = getchar();
            }
            a = (a * b) % mod;
        }
        sum = (sum + a) % mod;
    }
    printf("%d", sum % mod);//结果直保留最后的四位 
    return 0;
}

发布了45 篇原创文章 · 获赞 6 · 访问量 4963

猜你喜欢

转载自blog.csdn.net/qq_40761693/article/details/86706465