你是这么写的:
if (sum % 11 == 10)
...
else if(sum % 10 != 10)
...
else
...
第三种情况永远不会出现,当然不对
改了一下:
```cpp
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
string ISBN;
getline(cin, ISBN);
int A[10];
int j = 0;
for (int i = 0; i < ISBN.size(); i++) {
if ('0' <= ISBN[i] && ISBN[i] <= '9') {
A[j] = ISBN[i] - '0';
j++;
}
}
int sum = 0;
for (int m = 0; m < 9; m++) {
sum += A[m] * (m + 1);
}
if (sum % 11 == A[9]) {
cout << "Right";
}
else {
if (sum % 11 == 10) {
if (ISBN[ISBN.size() - 1] == 'X') {
cout << "Right";
}
else {
ISBN[ISBN.size() - 1] = 'X';
for (int n = 0; n < ISBN.size(); n++) {
cout << ISBN[n];
}
}
}
else {
ISBN[ISBN.size() - 1] = sum % 11 + '0';
for (int n = 0; n < ISBN.size(); n++) {
cout << ISBN[n];
}
}
return 0;
}
}
```
字符串直接cin就行了,不需要getline
by xuyao35 @ 2024-01-22 20:33:13