思路:
一开始我是用两个字符数组来做的,发现总有一些数据过不了emmm。。后来发现这道题有些坑,第一个字符串是可以为空的,所以决定用一个字符串变量存取,接着来找空格的位置。
#include<iostream>
#include<string>
using namespace std;
int main()
{
string S;
int flagA = 0, flagB = 0;
getline(cin, S);//用来接收包括空格在内的字符
int sumA = 0, sumB = 0, Base;
for (int i = 0; i < S.length(); i++)//找第一个空格
{
if (S[i] == ' ')//碰到第一个空格
{
Base = 1;//初始化
if (i == 0)
{
flagA = 1;
}
for (int j = i - 1; j >= 0; j--)//计算A
{
if (S[j]<'0' || S[j]>'9')//如果字符不为数字
{
flagA = 1;
break;//标识,退出
}
else
{
sumA += Base * (S[j] - '0');//如果是数字,
Base *= 10;
}
}
if (sumA > 1000 || sumA < 1)
{
flagA = 1;
}
Base = 1;//重新初始化
for (int j = S.length() - 1; j > i; j--)//计算B
{
if (S[j]<'0' || S[j]>'9')
{
flagB = 1;
break;
}
else
{
sumB += Base * (S[j] - '0');
Base *= 10;
}
}
if (sumB > 1000 || sumB < 1)
{
flagB = 1;
}
break;//注意及时跳出大循环
}
}
//输出设置
if (flagA)
{
cout << "? ";
}
else
{
cout << sumA << " ";
}
cout << "+ ";
if (flagB )
{
cout << "? ";
}
else
{
cout << sumB << " ";
}
cout << "= ";
if (flagA || flagB)
{
cout << "?";
}
else
cout << sumA + sumB;
system("pause");
return 0;
}