第二个输入可能有空格(题目保证至少存在一个空格),所以我们要用getline去读入第二个整数以防类似于
输入:12 + 100 24add
输出:112
这样的情况得到(%s不接收空格)
不然可能一直是13分
这个问题还未解决
解决方法:
1、把两个字符串放在一个中,利用题目条件 两个中间为空格
2、getline()接受包括空格在内的字符
3、fgets()
*scanf读不进空格‘ ’
#include
<stdio.h>
#include
<stdlib.h>
#include<math.h>
#include<string.h>
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)