求求大佬了!不知道哪里错了

P1055 [NOIP2008 普及组] ISBN 号码

Tom336853 @ 2022-02-18 19:44:14

#include<bits/stdc++.h>
using namespace std;
int main(){
 int i=0,j=0;
 char s[100]={0},a[100]={0};
 scanf("%s",&s);
 for(int i=0;i<12;i++){
  if(s[i]!='-')
  a[j++]=s[i];
 }
 cout<<a<<endl;
 int sum=0;
 for(int i=0;i<9;i++){
  sum=sum+(a[i]-'0')*(i+1);

 }
 if((sum%11)==s[12])
 {
  printf("Right");
 }
 else if((sum%11)==10){
   s[12]='X';
  printf("%s",s);
 }
 else {
  s[12]=sum%11;
  printf("%s",s);
 };

}

by RockyYue @ 2022-02-18 20:20:16

@Tom336853

共有四处错误:

  1. 输出a不需要,调试忘删了叭
  2. 判断right那个if中条件s[12]需要-'0'
  3. 还是这个if,需要特判一下为10(X)的情况
  4. 最后else那里s[12]也要+'0'

具体地,见代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
 int j=0;
 char s[100]={0},a[100]={0};
 scanf("%s",&s);
 for(int i=0;i<12;i++){
  if(s[i]!='-')
  a[j++]=s[i];
 }
 int sum=0;
 for(int i=0;i<9;i++){
  sum=sum+(a[i]-'0')*(i+1);

 }
 if((sum%11)==s[12]-'0'||(sum%11==10&&s[12]=='X'))
 {
  printf("Right");
 }
 else if((sum%11)==10){
   s[12]='X';
  printf("%s",s);
 }
 else {
  s[12]=sum%11+'0';
  printf("%s",s);
 };

}

by Tom336853 @ 2022-02-18 20:35:11

@RockyYue_ 太感谢了!!!


|