201312-2 ISBN号码
水体,直接上代码
1 #include<bits/stdc++.h> 2 3 using namespace std; 4 5 int main(){ 6 7 int a[11]; 8 char ch; 9 10 a[1] = getchar() - '0'; 11 ch = getchar(); 12 a[2] = getchar() - '0'; 13 a[3] = getchar() - '0'; 14 a[4] = getchar() - '0'; 15 ch = getchar(); 16 a[5] = getchar() - '0'; 17 a[6] = getchar() - '0'; 18 a[7] = getchar() - '0'; 19 a[8] = getchar() - '0'; 20 a[9] = getchar() - '0'; 21 ch = getchar(); 22 ch = getchar(); //第10个数 可能是X 所以不能当数字输入 23 24 int sum = 0; 25 for(int i=1;i<=9;i++) { 26 sum+=a[i]*i; 27 } 28 29 if(sum%11==ch-'0'||(sum%11==10&&ch=='X')){ 30 cout<<"Right"; 31 } 32 else{ 33 cout<<a[1]<<"-"<<a[2]<<a[3]<<a[4]<<"-"<<a[5]<<a[6]<<a[7]<<a[8]<<a[9]<<"-"<<(sum%11); 34 } 35 36 return 0; 37 }
然后尴尬了
然后仔细看了一下代码 为了方便 未作详细的分类 导致不同类的不同结果未考虑仔细
说人话就是 right的两个应该分开写 因为sum%11=10的情况 对应的输出应该是"X",而其余情况才是直接sum%11, 或者 输出结果之前应该判断 是否是10.
1 #include<bits/stdc++.h> 2 3 using namespace std; 4 5 int main(){ 6 7 int a[11]; 8 char ch; 9 10 a[1] = getchar() - '0'; 11 ch = getchar(); 12 a[2] = getchar() - '0'; 13 a[3] = getchar() - '0'; 14 a[4] = getchar() - '0'; 15 ch = getchar(); 16 a[5] = getchar() - '0'; 17 a[6] = getchar() - '0'; 18 a[7] = getchar() - '0'; 19 a[8] = getchar() - '0'; 20 a[9] = getchar() - '0'; 21 ch = getchar(); 22 ch = getchar(); //第10个数 可能是X 所以不能当数字输入 23 24 int sum = 0; 25 for(int i=1;i<=9;i++) { 26 sum+=a[i]*i; 27 } 28 if(sum%11==10){ 29 if(ch=='X'){ 30 cout<<"Right"; 31 } 32 else cout<<a[1]<<"-"<<a[2]<<a[3]<<a[4]<<"-"<<a[5]<<a[6]<<a[7]<<a[8]<<a[9]<<"-"<<"X"; 33 } 34 else if(sum%11==ch-'0'){ 35 cout<<"Right"; 36 } 37 else{ 38 cout<<a[1]<<"-"<<a[2]<<a[3]<<a[4]<<"-"<<a[5]<<a[6]<<a[7]<<a[8]<<a[9]<<"-"<<(sum%11); 39 } 40 41 return 0; 42 }