PTA正整数A+B

第二个输入可能有空格(题目保证至少存在一个空格),所以我们要用getline去读入第二个整数以防类似于

输入:12 + 100 24add

输出:112

这样的情况得到(%s不接收空格)

不然可能一直是13分

这个问题还未解决
解决方法:
1、把两个字符串放在一个中,利用题目条件 两个中间为空格
2、getline()接受包括空格在内的字符
3、fgets()
*scanf读不进空格‘ ’



#include


#include


#include

#include

int main()

{

    int i,j,sum=0,fab1=0,fab2=0,q,w;

    char a[1000]={0},b[1000]={0};

    scanf("%s",a);

    getchar();

    scanf("%s",b);

    q=strlen(a);

    w=strlen(b);

    for(i=0,j=0;a[i]!='\0'||b[j]!='\0';)

    {

        if(a[i]<'0'||a[i]>'9')

            fab1=1;

        if(b[j]<'0'||b[j]>'9')

            fab2=1;

        if(a[i]!='\0'&&b[j]!='\0')

        {

           
sum+=(a[i]-'0')*pow(10,q-i-1)+(b[j]-'0')*pow(10,w-j-1);

            i++;

            j++;

        }

        else if(a[i]=='\0'&&b[j]!='\0')

        {

            sum+=(a[j]-'0')*pow(10,q-i-1);

            j++;

        }

        else if(a[i]!='\0'&&b[j]=='\0')

        {

            sum+=(b[j]-'0')*pow(10,w-j-1);

            i++;

        }

    }

    if(fab1==0&&fab2==0)

        printf("%s + %s =
%d",a,b,sum);

    else if(fab1==1&&fab2==0)

        printf("? + %s = ?",b);

    else if(fab1==0&&fab2==1)

        printf("%s + ? = ?",a);

    else if(fab1==1&&fab2==1)

        printf("? + ? = ?",sum);

 

    return 0;

}
```![在这里插入图片描述](https://img-blog.csdnimg.cn/20190130114631878.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzE3NjM4NA==,size_16,color_FFFFFF,t_70)

你可能感兴趣的:(PTA)