此题然让本人纠结了很久,真的好多坑。。。。果然还是太菜了。
完整代码以及思路解析(在注释中)
#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";//如果验证码对了就输出Rightelse {num[12]='X';//把验证码改对cout<<num;}}//坑点三:这一步判断漏了else {if(ans==num[12]-'0')cout<<"Right";else{num[12]=ans+'0';//坑点四:记得加回来啊啊啊cout<<num;}}}