洛谷:P1957:口算练习题


洛谷:P1957:口算练习题

Table of Contents

题目

P1957:口算练习题

分析

这道题目,在确定运算符后进行分支判定和计算不烦,稍微烦一点的是根据第一个数据的数据判定:

  • 还要两个运算的数字
  • 还是继续之前的运算,并再读入一个数字

所以,核心代码就是:

    for (int j = 0; j < i; j++)
    {
        string input;
        int a, b;

        // 读取第一个输入
        cin >> input;

        // 判断是否为运算符
        if (input == "a" || input == "b" || input == "c")
        {
            op = input[0];  // 更新运算类型
            cin >> a >> b;  // 读取两个运算数
        }
        else
        {
            // 如果不是运算符,则使用上一次的运算类型
            a = stoi(input);
            cin >> b;
        }
    ...
    }

第一个input可能是一个字符,也可能是一个数字。所以为了最大的兼容性,我们用string来代表。如果是a|b|c,那么就用input[0]将其变成字符并更新操作类型(+-\*),然后继续读入两个数字;如果不是运算符,那么用stoi将其转化为第一个运算数,并再读入一个运算数。

然后是根据op(运算类型)来执行相应的计算,并输出整个表达式的长度。

请注意,我们需要构造出这个表达式。

答案

Solution

思考

(略)

Previous Next