求助!!!

P1957 口算练习题

WangYinxiAlex @ 2023-05-14 17:43:21

#include<iostream>
#include<math.h>
using namespace std;
int a[51][2];
char b[51];
string c[51];
int ch(int n){
    int sum=0;
    if(n<0){
        sum++;
        n=abs(n);
    }
    while(n){
        n/=10;
        sum++;
    }
    return sum;
}
string imput(int n){
    string x;
    while(n){
        char y=n%10+'0';
        x=y+x;
        n/=10;
    }
    return x;
}
int main(){
    int n;
    char s;
    cin>>n;
    for(int i=1;i<=n;i++){
        char z;
        if(!(cin>>z)){
            b[i]=s;
        }
        else{
            b[i]=z;
            s=z;
        }
        cin>>a[i][0]>>a[i][1];
    }
    for(int i=1;i<=n;i++){
        long long t;
        char u=b[i];
        c[i]+=imput(a[i][0]);
        else if(u=='a'){
            c[i]+='+';
            t=a[i][0]+a[i][1];
        }else if(u=='b'){
            c[i]+='-';
            t=a[i][0]-a[i][1];
        }else if(u=='c'){
            c[i]+='*';
            t=a[i][0]*a[i][1];
        }
        c[i]+=imput(a[i][1]);
        c[i]+='=';
        cout<<c[i]<<t<<endl;
        cout<<c[i].length()+ch(t)<<endl;
    }
    return 0;
}

为什么这个程序我就是没法让他没输入的字符改为上一个!!!


by DLYdly1105 @ 2023-05-15 16:32:19

呃呃呃,是这样子的。你第34行

if(!(cin>>z))

这样判断是没有用的。

比如样例那个

275 125

它会把那个“ 2 ”当成是运算符。

所以最好判断输入的 z 是不是数字,如果是,就说明这一行的运算类型和上一行一样。

还有,你的 0 的长度特判了吗?


by WangYinxiAlex @ 2023-06-22 16:49:25

谢谢大佬!!!


|