一、题目
![](https://img-blog.csdnimg.cn/direct/8ecd405f45a8429383e7917ab0e98c50.png)
二、解题思路
- 输入两个字符串,一个 cin 输入,一个 getline 输入;
- 判断两个字符串是否是正整数:字符串长度、是否有非数字的字符、是否在区间 [1,100] ;
- 分情况输出。
三、代码
#include<iostream>
using namespace std;
//函数的声明
int is_integer(string str);
int main()
{
string a,b;
cin>>a;
getline(cin,b);
b.erase(0,1);
int A=is_integer(a);
int B=is_integer(b);
if(A==0 && B==0)
{
cout<<"? + ? = ?";
}
else if(A==0 && B!=0)
{
cout<<"? + "<<B<<" = ?";
}
else if(A!=0 && B==0)
{
cout<<A<<" + ? = ?";
}
else
{
cout<<A<<" + "<<B<<" = "<<A+B;
}
return 0;
}
//判断输入的字符串是否是整数,是则返回 1 ,否则返回 0
int is_integer(string str)
{
if(str.size()>4)
{
return 0;
}
int sum=0;
for(int i=0;i<str.size();i++)
{
if(str[i]>='0' && str[i]<='9')
{
sum=sum*10+int(str[i])-'0';
}
else
{
return 0;
}
}
if(sum<1 || sum>1000)
{
return 0;
}
else
{
return sum;
}
}
四、总结
- 若输入为 "123 45 6",则 A 为 "123" ,B 为 "45 6" ,结果为 "123 + ? = ?" 。
- 题目要求把输入中出现的第1个空格认为是 A 和 B 的分隔,并且至少存在一个空格:A 直接 cin 输入即可,B 需要 getline输入,此时 B 包含前边的空格,所以通过 erase 把第一个多余的空格删除。