社区讨论

【P1957 口算练习题】RE 0分

P1957口算练习题参与者 3已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@loci9yie
此快照首次捕获于
2023/10/30 14:15
2 年前
此快照最后确认于
2023/11/05 01:38
2 年前
查看原帖
在线下运行时并没有报错,提交上去就RuntimError了,为什么啊?
CPP
#include <iostream>
#include <cstdio>
using namespace std;

char a[1100][1100] = {0};

int main()
{

    int n;
    cin >> n;
    cin.get(); //删除缓冲区中cin剩下下的'\n'

    int tmp1 = 0, tmp2 = 0, tmp3 = 0; //运算数
    char a2 = 0;                      //存储运算符

    for (int i = 0; i < n; i++)
    {
        cin.getline(a[i], 110); ///按行输入

        //读入运算符
        int j = 2;
        if ('a' <= a[i][0] && a[i][0] <= 'c' )
        {
            a2 = a[i][0];
            j = 2;
        }
        else
        {
            j = 0;
        }

        //读入运算数
        tmp1 = 0, tmp2 = 0;
        while (a[i][j] < '0' || a[i][j] > '9')
            j++;
        for (; a[i][j] != ' ' && a[i][j] != 0; j++)
        {
            tmp1 *= 10;
            tmp1 += a[i][j] - '0';
        }
        while (a[i][j] < '0' || a[i][j] > '9')
            j++;
        for (; a[i][j] != ' ' && a[i][j] != 0; j++)
        {
            tmp2 *= 10;
            tmp2 += a[i][j] - '0';
        }

        //计算
        switch (a2)
        {
        case 'a':
            tmp3 = tmp1 + tmp2;
            printf("%d+%d=%d\n", tmp1, tmp2, tmp3);
            break;
        case 'b':
            tmp3 = tmp1 - tmp2;
            printf("%d-%d=%d\n", tmp1, tmp2, tmp3);
            break;
        case 'c':
            tmp3 = tmp1 * tmp2;
            printf("%d*%d=%d\n", tmp1, tmp2, tmp3);
            break;
        }
        //计算运算式的总长度
        int cnt = 2;
        if (tmp3 <= 0)//
            cnt++;
        while (tmp1 != 0)
        {
            tmp1 /= 10;
            cnt++;
        }
        while (tmp2 != 0)
        {
            tmp2 /= 10;
            cnt++;
        }
        while (tmp3 != 0)
        {
            tmp3 /= 10;
            cnt++;
        }
        cout << cnt << endl;
    }
    return 0;
}

回复

7 条回复,欢迎继续交流。

正在加载回复...