样例测试点全对,但是提交全是WA

P1957 口算练习题

sgzdaq @ 2023-05-22 21:40:17

#include<stdio.h>

int main()
{
    int n;
char s[50][14]={0};
    char b[50]={0}; 
    int c[50][2]={0};
    int num[50]={0};
    scanf("%d",&n);
    getchar();
    for(int i=0;i<n;i++)
    {
    for(int j=0;j<14;j++)
    {
        scanf("%c",&s[i][j]);
        if(s[i][j]=='\n'&&j!=0)
        {
            break;
        }
    }
    }
    for(int i=0;i<n;i++)
    {
        if(s[i][0]=='a')
        {
            b[i]='+';
            continue;
        }
        if(s[i][0]=='b')
        {
            b[i]='-';
            continue; 
        }
        if(s[i][0]=='c')
        {
            b[i]='*';
            continue;
        }
        else
        {
            b[i]=b[i-1];
        }
    }

    for(int i=0;i<n;i++)
    {
            if(s[i][0]=='a'||s[i][0]=='b'||s[i][0]=='c')        
            {
                int j=2;
                while(s[i][j]!=' ')
                {
                    j++;
                }
                for(int k=2;k<j;k++)
                {
                    c[i][0]=c[i][0]*10+(s[i][k]-'0');
                }
                int g=j+1;
                while(s[i][g]!='\n')
                {
                    c[i][1]=c[i][1]*10+(s[i][g]-'0');
                    g++;
                }
                num[i]=g-1;
            }
            else
            {
                int j=0;
                while(s[i][j]!=' ')
                {
                    j++;
                }
                    for(int k=0;k<j;k++)
                {
                    c[i][0]=c[i][0]*10+(s[i][k]-'0');
                }
                int g=j+1;
                while(s[i][g]!='\n')
                {
                    c[i][1]=c[i][1]*10+(s[i][g]-'0');
                    g++;
                }
                num[i]=g+1;
            }       
    }   
    int i;
    for( i=0;i<n-1;i++)
    {
        int sum;
        if(b[i]=='+')
        {
            sum=c[i][0]+c[i][1];
        }
        if(b[i]=='-')
        {
            sum=c[i][0]-c[i][1];
        }
        if(b[i]=='*')
        {
            sum=c[i][0]*c[i][1];
        }
        if(b[i]=='+')
        {
        printf("%d+%d=%d\n",c[i][0],c[i][1],sum);
        if(sum<0)
        {
            num[i]++;
            sum=sum*(-1);
        }
        while(sum/10!=0)
        {
            num[i]++;
            sum=sum/10;
        }
        num[i]++;
        printf("%d\n",num[i]);
        }
            if(b[i]=='-')
        {
        printf("%d-%d=%d\n",c[i][0],c[i][1],sum);
        if(sum<0)
        {
            num[i]++;
            sum=sum*(-1);
        }
        while(sum/10!=0)
        {
            num[i]++;
            sum=sum/10;
        }
        num[i]++;
        printf("%d\n",num[i]);
        }
            if(b[i]=='*')
        {
        printf("%d*%d=%d\n",c[i][0],c[i][1],sum);
        if(sum<0)
        {
            num[i]++;
            sum=sum*(-1);
        }
        while(sum/10!=0)
        {
            num[i]++;
            sum=sum/10;
        }
        num[i]++;
        printf("%d\n",num[i]);
        }
    }

    int sum;
        if(b[i]=='+')
        {
            sum=c[i][0]+c[i][1];
        }
        if(b[i]=='-')
        {
            sum=c[i][0]-c[i][1];
        }
        if(b[i]=='*')
        {
            sum=c[i][0]*c[i][1];
        }
        if(b[i]=='+')
        {
        printf("%d+%d=%d\n",c[i][0],c[i][1],sum);
        if(sum<0)
        {
            num[i]++;
            sum=sum*(-1);
        }
        while(sum/10!=0)
        {
            num[i]++;
            sum=sum/10;
        }
        num[i]++;
        printf("%d",num[i]);
        }
            if(b[i]=='-')
        {
        printf("%d-%d=%d\n",c[i][0],c[i][1],sum);
        if(sum<0)
        {
            num[i]++;
            sum=sum*(-1);
        }
        while(sum/10!=0)
        {
            num[i]++;
            sum=sum/10;
        }
        num[i]++;
        printf("%d",num[i]);
        }
            if(b[i]=='*')
        {
        printf("%d*%d=%d\n",c[i][0],c[i][1],sum);
        if(sum<0)
        {
            num[i]++;
            sum=sum*(-1);
        }
        while(sum/10!=0)
        {
            num[i]++;
            sum=sum/10;
        }
        num[i]++;
        printf("%d",num[i]);
}

    return 0;
}

by ninji @ 2023-05-22 21:48:51

#include <bits/stdc++.h> 
using namespace std;
int nl(int n)
{
    int x=0;
    if(n<0){
        x++;
        n*=-1;
    }
    do
    {
        x++;
        n/=10;
    }while(n!=0);
    return x;
}
int main(void){
    int a,b,i;
    char x,y[30];
    cin>>i;
    for(int j=1;j<=i;j++){
        scanf("%s",y);
        if(isalpha(y[0])){
            x=y[0];
           cin>>a>>b;
        }
        else
        {
            a=0;
            for(int k=0;k<strlen(y);k++)
            {
                a=a*10+(y[k]-'0');
            }
          cin>>b;
        }
        if(x=='a')
        {
            printf("%d+%d=%d\n%d\n",a,b,a+b,nl(a)+nl(b)+nl(a+b)+2);
        }
        else if(x=='b')
        {
            printf("%d-%d=%d\n%d\n",a,b,a-b,nl(a)+nl(b)+nl(a-b)+2);
        }
        else if(x=='c')
        {
            printf("%d*%d=%d\n%d\n",a,b,a*b,nl(a)+nl(b)+nl(a*b)+2);
        }
    }
    return 0;
}

这样就可以了,(你写的代码代码太长了)


by ninji @ 2023-05-22 21:49:08

@sgzdaq


|