思路:
一開始我是用兩個字符數組來做的,發現總有一些數據過不了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;
}