return_dr 2022-02-09 14:15 采纳率: 66.7%
浏览 66
已结题

本地运行没问题,但交上去错了

https://www.luogu.com.cn/problem/P1957

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

int ws(int);
void jia();
void jian();
void cheng();

int n, length;
string a;

int main() {
    cin >> n;
    while(n-- >= 0) {
        getline(cin, a);
        length = a.length();
        if(isdigit(a[0]) || a[0] == 'a')
            jia();
        else if(a[0] == 'b')
            jian();
        else if(a[0] == 'c')
            cheng();
    }
    return 0;
}

int ws(int x) {
    int w = 0;
    if(x < 0) {
        x = abs(x);
        w++;
    }
    while(x > 0) {
        x /= 10;
        w++;
    }
    return w;
}

void jia() {
    int i = 0, js = 0, bjs = 0;
    if(!isdigit(a[i]))
        i += 2;
    while(a[i] != ' ') {
        bjs *= 10;
        bjs += a[i] - '0';
        i++;
    }
    i++;
    while(i < length) {
        js *= 10;
        js += a[i] - '0';
        i++;
    }
    int h = bjs + js;
    int l = ws(bjs) + ws(js) + ws(h) + 2;
    printf("%d+%d=%d\n%d\n", bjs, js, h, l);
    return ;
}

void jian() {
    int i = 0, js = 0, bjs = 0;
    if(!isdigit(a[i]))
        i += 2;
    while(a[i] != ' ') {
        bjs *= 10;
        bjs += a[i] - '0';
        i++;
    }
    i++;
    while(i < length) {
        js *= 10;
        js += a[i] - '0';
        i++;
    }
    int h = bjs - js;
    int l = ws(bjs) + ws(js) + ws(h) + 2;
    printf("%d-%d=%d\n%d\n", bjs, js, h, l);
    return ;
}

void cheng() {
    int i = 0, cs = 0, bcs = 0;
    if(!isdigit(a[i]))
        i += 2;
    while(a[i] != ' ') {
        bcs *= 10;
        bcs += a[i] - '0';
        i++;
    }
    i++;
    while(i < length) {
        cs *= 10;
        cs += a[i] - '0';
        i++;
    }
    int h = bcs * cs;
    int l = ws(bcs) + ws(cs) + ws(h) + 2;
    printf("%d*%d=%d\n%d\n", bcs, cs, h, l);
    return ;
}
  • 写回答

3条回答 默认 最新

  • qzjhjxj 2022-02-10 16:13
    关注

    代码修改如下,供参考:

    #include <cstdio>
    #include <string>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    int  ws(int);
    void operation(string a,char ch);
    int main() 
    {
        int n, i = 0;
        string a;
        char ch;
        cin >> n;
        cin.get();
        while (n--) {         
            getline(cin, a);
            if (a[0] == 'a') {
                ch = '+';
            }
            else if (a[0] == 'b') {
                ch = '-';
            }
            else if (a[0] == 'c') {
                ch = '*';
            }
            else if (i == 0)
                continue;
            operation(a, ch); 
            i++;
        }
        return 0;
    }
    int ws(int x) {
        int w = 0;
        if (x < 0) {
            x = abs(x);
            w++;
        }
        while (x > 0) {
            x /= 10;
            w++;
        }
        return w;
    }
    void operation(string a,char ch)
    {
        int i = 0, flg = 0, js = 0, bjs = 0, tmp = 0;
        while (i < a.length())
        {
            if (isdigit(a[i]))
            {
                flg = 1;
                while (isdigit(a[i]) && i < a.length()) {
                    js = js * 10 + a[i] - '0';
                    i++;
                }
            }
            if (flg == 1){
                flg = 0;
                if (bjs == 0) {
                    bjs = js;
                    js = 0;
                }
            }
            i++;
        }
        switch (ch) {
        case '+':
            tmp = bjs + js;
            break;
        case '-':
            tmp = bjs - js;
            break;
        case '*':
            tmp = bjs * js;
            break;
        default:
            bjs = js = 0;
            tmp = 0;
            break;
        }
        printf("%d%c%d=%d\n%d\n", bjs, ch, js, tmp, ws(bjs) + ws(js) + ws(tmp) + 2);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月18日
  • 已采纳回答 2月10日
  • 创建了问题 2月9日

悬赏问题

  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥100 关于#audobe audition#的问题,如何解决?
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22