解题思路:
1.用一个int数组单独存储每个数字;用char数组存储原始标识符串,方便输出
2.计算后得到标识码,判断是否正确
#include<iostream>
using namespace std;int main()
{int num[15]; //存储每个位置的数char arr[15]; //原始标识符 int pos=0; //num存入的位置 for(int i=0;i<12;i++){char x;cin>>x;arr[i]=x; //存入原始字符int t=x-'0';if((t>=0&&t<=9)) //如果是数字{num[pos]=t; //存入数字数组pos++; //位置向后一位}}char isbn; //标识码 cin>>isbn; //单独输入标识码int sum=0;for(int i=0;i<9;i++) //计算标识码{sum+=num[i]*(i+1);} sum=sum%11;if(sum==10){if(isbn=='X'){cout<<"Right";}else{for(int i=0;i<12;i++){cout<<arr[i];}cout<<'X';}}else{int t=isbn-'0';if(sum==t){cout<<"Right";}else{for(int i=0;i<12;i++){cout<<arr[i];}cout<<sum;}}return 0;
}