此题然让本人纠结了很久,真的好多坑。。。。果然还是太菜了。
完整代码以及思路解析(在注释中)
#include <iostream>
using namespace std;
int main()
{
string num;
cin>>num;
int count=0;
int w=1;
for(int i=0;i<=10;i++)
{
if((i!=1)&&(i!=5)) //坑点一:之前一直写的是((i!=1)||(i!=5))还傻乎乎的看不出来,本来就没有一个数即等于1又等于5。
{
count+=(num[i]-'0')*w;//坑点二:字符串是ACSII编码形式,要转化
w++;
}
}
int ans=count%11;
if(ans==10)
{
if(num[12]=='X') cout<<"Right";//如果验证码对了就输出Right
else {
num[12]='X';//把验证码改对
cout<<num;
}
}//坑点三:这一步判断漏了
else {
if(ans==num[12]-'0')
cout<<"Right";
else
{
num[12]=ans+'0';//坑点四:记得加回来啊啊啊
cout<<num;
}
}
}