全0了,求助,自测好像没有问题

P1957 口算练习题

FishingRod @ 2020-08-11 16:10:13

#include<stdio.h>
#include<string.h>

char char_array[20];
int main()
{   
    int i,la,lb=0,num_a,num_b,out,is_old=0;
    char sym,first;
    scanf("%d",&i);
    while(getchar()!='\n')
    continue;
    while(i--)
    {
        gets(char_array);
        la=strlen(char_array);
        first=char_array[0];
        if(first=='a')sym='+';
        else if(first=='b')sym='-';
        else if(first=='c')sym='*';
        else is_old=1;

        if(is_old)
        sscanf(char_array,"%d%d",&num_a,&num_b);
        else 
        sscanf(char_array,"%c%d%d",&first,&num_a,&num_b);
        if(sym=='+')out=num_a+num_b;
        else if(sym=='-')out=num_a-num_b;
        else if(sym=='*')out=num_a*num_b;
        printf("%d%c%d=%d\n",num_a,sym,num_b,out);
        while(out)
        {
            if(out<0)
            {
                lb+=1;out=-out;
            }
            lb++;
            out/=10;
        }
        if(is_old)printf("%d",la+lb+1);
        else printf("%d",la+lb-1);
        if(i>0)printf("\n");
        lb=0,is_old=0;
    }
    return 0;
}

by Terrible @ 2020-08-11 16:17:26

5测试点是第4行输出大一(这貌似意味着第2行是正确的)

其他测试点都是第二行输出大一。

字串长度总是会多算一个。

@FishingRod


by FishingRod @ 2020-08-11 16:23:12

@Terrible 啊感谢,突然意识到自己问了个愚蠢的问题,先前自己改的时候开了好几个程序然后就乱了。


by Terrible @ 2020-08-11 16:24:28

排版乱了这个#会改成标题行。我想说的是#5.


by FishingRod @ 2020-08-11 16:31:22

@Terrible 啊这,对不起再打扰一下。我本机测试出来确实是和样例对上的,然后试了试洛谷的IDE发现就是你说的那个问题。但我不清楚这个是什么造成的


by Terrible @ 2020-08-11 22:11:16

你过了啊,那我就不管咯。


|