为什么全wa啊?

P1957 口算练习题

woritage @ 2024-12-19 21:40:03


#include <string.h>
#include <stdlib.h>

typedef struct
{
    char op;
    int num1;
    int num2;
}cal;

int leng (int n);

int main()
{
    int i;
    scanf ("%d",&i);
    getchar();
    cal exa[51];
    int result;
    for (int r=0; r<i; r++)
    {
        char str[3][6];
        for (int j=0; j<3; j++)
        {
            scanf ("%s",str[j]);
            if (j==0&&(str[j][0]<'a'||str[j][0]>'c'))
            {
                j+=1;
            }
        }
        if (str[0][0]>='a'&&str[0][0]<='c')
        {
            exa[r].op=str[0][0];
            exa[r].num1=atoi(str[1]);
            exa[r].num2=atoi(str[2]);
        }
        else
        {
            exa[r].op=exa[r-1].op;
            exa[r].num1=atoi(str[0]);
            exa[r].num2=atoi(str[2]);
        }
    }
    for (int r=0; r<i; r++)
    {
        switch (exa[r].op)
        {
            case'a':
                result=exa[r].num1+exa[r].num2;
                printf ("%d+%d=%d",exa[r].num1, exa[r].num2,result);
                break;
            case'b':
                result=exa[r].num1-exa[r].num2;
                printf ("%d-%d=%d",exa[r].num1, exa[r].num2,result);
                break;
            case'c':
                result=exa[r].num1*exa[r].num2;
                printf ("%d*%d=%d",exa[r].num1, exa[r].num2,result);
                break;
        }
        printf ("%d\n",leng(exa[r].num1)+leng(exa[r].num2)+leng(result));
    }
}

int leng (int n)
{
    int i=0;
    while (n>0)
    {
        n/=10;
        i++;
    }
    return i;
}```

by ruo_aqueous @ 2024-12-19 21:45:51

@woritage
他不是要换行并输出表达式长度马


by woritage @ 2024-12-23 12:22:57

@ruo_aqueous换行了也是全wa欸


by woritage @ 2024-12-23 12:32:11

@ruo_aqueous 原来我没有处理负数,现在通过了,谢谢


by ruo_aqueous @ 2024-12-23 14:35:08

@woritage
求关


|