如题,本题需要解决的本质就是多个字符串转换为整型数据的过程。主要的考点在于如下3个:
1.循环输入多个字符串并不间断
2.将字符串处理为整型数据
3.完成对整形数据的检验
上述三个要求通过STL可以很轻松地解决,具体做法写在了代码注释之中。
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
void vectorPrint(vector<int> T1)
{
for(vector<int>::iterator it=T1.begin();it!=T1.end();it++)
cout<<(*it)<<" ";
//打印整型vector的方法,没有实际意义,仅仅用来调试
}
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv)
{
string temp;
//定义临时目标字符串
while (cin>>temp)
//当输入字符串时,循环就不停止,一直进入并计算
{
// cout<<temp<<endl;
vector<int> V;
for(int i=0;i<=temp.size()-1;i++)
{
int t=temp[i]-48;
//将字符串的每一位处理为int型的数据,并且压入int型的vector
V.push_back(t);
}
// vectorPrint(V);
reverse(V.begin(),V.end());
//逆向操作后,从头开始按照奇数偶数位遍历。
int jishu=0,oushu=0,sum=0;
for(int i=0;i<=V.size()-1;i+=2)
{
jishu+=V[i];
//奇数位直接相加
}
for(int i=1;i<=V.size()-1;i+=2)
{
V[i]*=2;
if(V[i]>=10)
V[i]-=9;
oushu+=V[i];
//偶数位判断*2是否大于10,大于10需要减9
}
sum=jishu+oushu;
//求和后判断是否可以整除10,完杀
if(sum%10==0)
cout<<"Pass"<<endl;
else
cout<<"Fail"<<endl;
}
return 0;
}