全WA,蒟蒻求助!

P1957 口算练习题

Vegiak @ 2020-08-16 07:50:22

乱七八糟的代码

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int n,m;
int main()
{
    cin>>n;
    cin.get();
    for(int i=1;i<=n;i++)
    {
        string s;
        int k=1,dig[3]={0,0,0},ans,res,fu=0;
        getline(cin,s);
        ans=s.length();
        for(int j=0;j<s.length();j++)
        {
            if(s[j]>='a'&&s[j]<='c')
            {
                m=s[j]=s[j]-'a'+1;
                ans-=2;
                j++;
                continue;
            }
            if(s[j]==' ')
            {
                k=2;
                continue;
            }
            if(s[j]=='-')
            {
                fu=1;
                continue;
            }
            dig[k]*=10;
            dig[k]+=s[j]-'0';
            if(fu==1)
            {
                fu=0;
                dig[k]+=-1;
            }
        }
        cout<<dig[1];
        if(m==1)
        {
            res=dig[1]+dig[2];
            cout<<"+"<<dig[2]<<"="<<res<<endl;
        }
        if(m==2)
        {
            res=dig[1]-dig[2];
            cout<<"-"<<dig[2]<<"="<<res<<endl;
        }
        if(m==3)
        {
            res=dig[1]*dig[2];
            cout<<"*"<<dig[2]<<"="<<res<<endl;
        }
        if(res<0)ans++;
        while(res)
        {
            res/=10;
            ans++;
        }
        ans++;
        if(dig[1]<0)ans++;
        if(dig[2]<0)ans++;
        cout<<ans<<endl;
    }
    return 0;
}

by sync_with_stdio @ 2020-08-16 11:01:55

不要用getline,用cin,读入一个字母,两个字符串,如果字母>='0' && <='9',就把它加到第一个字符串里

即:

cin>>qaz>>a1>>a2;
if(qaz=='a')
    type=1;
if(qaz=='b')
    type=2;
if(qaz=='c')
    type=3;
if(qaz>='0' && qaz<='9')
    a1=qaz+a1;

然后就按type对应的种类输出就行。

@Vegiak


by sync_with_stdio @ 2020-08-16 11:03:26

我也是刚A的·


by Vegiak @ 2020-08-16 12:56:26

感谢,学到了((


|