大佬们,麻烦帮忙看看我的代码有什么问题,谢谢!

P1957 口算练习题

wow12138 @ 2022-08-08 21:29:07

#include<bits/stdc++.h>
using namespace std;
int sz(string a,int b,int c){//函数作用:将字符串a中第b项到第c项的数转化为int型数据,方便运算。 
    int d=0;
    for(int i=b;i<=c;i++){
        d=d*10;
        d=d+a[i]-'0';
    }
    return d;
}
int main(){
    int n,flag=1;//n表示n个算式;flag用来表示运算符号,值为1、2、3分别表示加减乘。 
    cin>>n;
    string a[n];//a[i]为记录的字符串。 
    getline(cin,a[0]);//输入n有回车,需要这行保证真正的a[0]不会读错。 
    for(int i=0;i<=n-1;i++){
        getline(cin,a[i]);
    }
    for(int i=0;i<=n-1;i++){
        if(a[i][0]=='a'){
            flag=1;
        }
        if(a[i][0]=='b'){
            flag=2;
        }
        if(a[i][0]=='c'){
            flag=3;
        }//查看运算符号。 
        int d=0,e=0,f,g,h;//d、e用来标记第一个数的开头、结尾在字符串中的位置;
        //f、g、h分别记录输入的两个数和结果;
        //比如:a 12 13中d、e分别为2(a[2]=1)、3(a[3]=2),f、g、h分别为12、13、25。
        for(int j=0;;j++){
            if(a[i][j]>='0'&&a[i][j]<='9'){
                d=j;
                break;
            }
        }
        for(int j=d+1;;j++){
            if(a[i][j]==' '){//第一个数结束后下一位必然是' ',借此得出e。 
                e=j-1;
                break;
            }
        }
        f=sz(a[i],d,e);//计算f。 
        g=sz(a[i],e+2,a[i].size()-1);//第二个数必然始于第一个数结尾后2位,终于字符串末尾。 
        cout<<f;
        if(flag==1){//根据flag输出对应的符号并算出h。 
            cout<<'+';
            h=f+g;
        }
        if(flag==2){
            cout<<'-';
            h=f-g;
        }
        if(flag==3){
            cout<<'*';
            h=f*g;
        }
        int x=h,count=0;//x即h,因为h还要输出,值不能变,用x代替进行运算;count计算位数。 
        if(x<0){//h若是负数,负号占一位。 
            count++;
        }
        while(x!=0){//算出h的位数。 
            x=x/10;
            count++;
        }
        cout<<g<<'='<<h<<endl<<-d+1+a[i].size()+count<<endl;
        //总长度=[e-d+1](第一个数)+[(a[i].size-1)-(e+2)+1](第二个数)+[count](第三个数)+2(负号)=上式 
    }
return 0;}

by wow12138 @ 2022-08-08 21:32:26

现在的情况是:10个数据点全错。。。

我把第一个数据点下了下来,是:

输入:

1

a 99 999

输出:

99+999=1098

11

而洛谷显示我在第一行第六个数字输出为5(应为9)

但我在自己编译器上却没有问题

以及样例输入输出也没问题

是代码本身有问题还是洛谷的问题?请大佬帮忙看看,再次感谢!


by zhou_reset_qihao @ 2022-08-08 21:37:27

你这题编号多少


by zhou_reset_qihao @ 2022-08-08 21:37:52

我帮你交一下然后帮你看


by wow12138 @ 2022-08-08 23:41:57

@ZQHyyds123

P1957(抱歉回晚了,之前有点事)


by zhou_reset_qihao @ 2022-08-09 23:05:32

没事


by zhou_reset_qihao @ 2022-08-09 23:05:58

你现在还是错的吗


by zhou_reset_qihao @ 2022-08-09 23:27:23

洛谷有些问题


by zhou_reset_qihao @ 2022-08-09 23:27:55

那里是if(x<=0) count++;


by zhou_reset_qihao @ 2022-08-09 23:28:39

其他的没问题,但是洛谷还是显示错误


by zhou_reset_qihao @ 2022-08-09 23:29:32

你把那个点看一下,洛谷评测机坏了,你程序除了那个之外没问题了


| 下一页