Benerd @ 2024-01-18 20:53:56
#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 {
if (sum % 11 != 10) {
ISBN[ISBN.size() - 1] = sum % 11 + '0';
}
else {
ISBN[ISBN.size() - 1] = 'X';
}
for (int n = 0; n < ISBN.size(); n++) {
cout << ISBN[n];
}
}
return 0;
}
}
by FarmerDrone @ 2024-01-22 20:33:13
你是这么写的: if (sum % 11 == 10) ... else if(sum % 10 != 10) ... else ... 第三种情况永远不会出现,当然不对 改了一下:
#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