求助各位大神,案例结果一样,样例1也一样,但全是WA,到底为什么???

P1957 口算练习题

yw15912527693 @ 2023-06-30 16:36:05

#include<bits/stdc++.h>
#include<cstring>
using namespace std;
int main(){
    int n;
    cin>>n;
    getchar();//因为循环中用getline语句,用getchar消除第一个cin的回车影响; 
    string a[n],b[n],c[n],d[n];//a[n]输入的每一行,b[n]第一个数字,c[n]第二个数字 
    char f[n];//输入的运算符 
    int bb[n]={0},cc[n]={0},dd[n]={0},w[n]={0},wb[n],wc[n]; //bb第一个数字转换成整型,cc第二个数字,dd,运算结果,w最后运算数的长度,wb第一个数的长度,wc第二个数的长度 
    for(int i=0;i<n;i++){

        getline(cin,a[i]);//输入每一行,getline用语有空格的输入 
        if(a[i][0]=='a'||a[i][0]=='b'||a[i][0]=='c'){
            f[i]=a[i][0];
            a[i]=a[i].substr(2);//如果第一个字符是表示运算符的ABC,提取出来 
        }
        else f[i]=f[i-1];//如果没有运算符,和上一行的相同 
        int k=a[i].find(" ");
        b[i]=a[i].substr(0,k);
        c[i]=a[i].substr(k+1);//根据空格拆分第一个数和第二个数 
        for(int j=0;j<b[i].length();j++){
            bb[i]+=(b[i][j]-'0')*pow(10,b[i].length()-1-j);
        }
        for(int j=0;j<c[i].length();j++){
            cc[i]+=(c[i][j]-'0')*pow(10,c[i].length()-1-j);
        }//将第一个数、第二个数转换成整型 
    }
    for(int i=0;i<n;i++){
        if(f[i]=='a'){
            cout<<bb[i]<<"+"<<cc[i]<<"="<<bb[i]+cc[i]<<endl;
            dd[i]=bb[i]+cc[i];
        }
        if(f[i]=='b'){
            cout<<bb[i]<<"-"<<cc[i]<<"="<<bb[i]-cc[i]<<endl;
            dd[i]=bb[i]-cc[i];
        }
        if(f[i]=='c'){
            cout<<bb[i]<<"*"<<cc[i]<<"="<<bb[i]*cc[i]<<endl;
            dd[i]=bb[i]*cc[i];
        }//根据运算符计算并输出 
        if(dd[i]<0){
            w[i]++;
            dd[i]=-dd[i];
        }//计算每个运算符的长度,如有结果有负数,长度加1 
        if(dd[i]==0)w[i]=1;//如果结果为0,结果的长度为1 
        while(dd[i]!=0){
            w[i]++;
            dd[i]/=10;
        }//计算结果的长度 
        wb[i]=b[i].length();
        wc[i]=c[i].length();//得到第一、二个数的长度 
        w[i]=wb[i]+wc[i]+2+w[i];//计算总长度,+2是因为运算符和等号的长度 
        cout<<w[i]<<endl;
    }
    return 0;
}

是哪里不对吗


|