题目:输入一串正整数字符,各正整数之间用空格分开,只有数字字符和空格有效,其他字符均为无效;
输入正整数个数不超过32个(即:正整数个数<=32)。
若出现无效字符,输出ERROR;若输入正整数个数超过32个,输出ERROR。
若有效,则求出总和;
例子:
输入:12 a34 输出:ERROR
输入:12 34 输出:46
下列程序未考虑输入字符串位数太多导致相加和溢出的问题。
程序:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
getline(cin,str);
int result = 0;
int count = 0;
bool invalid = false;
int num = 0;
for(int i=0;i<=str.size();++i)
{
if(str[i]>'0'&&str[i]<'9')
{
num = 10*num+str[i]-'0';
}
else if(str[i]==' '||str[i]=='\0')
{
result += num;
num = 0;
count += 1;
if(count > 32)
{
cout << "ERROR";
invalid = true;
break;
}
}
else
{
cout << "ERROR";
invalid = true;
break;
}
}
if(!invalid)
cout << result;
system("pause");//按任意键继续...
return 0;
}