将权重,对应值和校验码都放到数组中,将不符合要求的字符串存到vector中,如果都符合要求,直接输出“All passed”.
#include <iostream> #include <vector> using namespace std; int main() { int q[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; int z[11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; char m[11] = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'}; int n; cin >> n; vector<string> v; char a; int count = 0; for(int i = 0; i < n; i++) { string s; cin >> s; int t = 0; for(int j = 0; j < 17; j++) { t += (s[j] - '0') * q[j]; } t = t % 11; a = m[t]; if(a != s[s.length() - 1]) { count++; v.push_back(s); } } if(count == 0) { cout << "All passed" << endl; } else { for(int i = 0; i < v.size(); i++) { cout << v[i] << endl; } } return 0; }