RERERE!!!!!!!!!

P1055 [NOIP2008 普及组] ISBN 号码

RE 是因为第7行的 printf 少了 & ,而且不应该用 %s 要用 %c 。 这样交上去还是错的,因为你直接用字符进行计算了,就是 a[i] ,char 型对应的数是该字符的 ASCII值,如 '0' 对应的是48,计算就会出错。
by zhouruoheng @ 2023-10-19 22:58:14


这样改 ```cpp #include<stdio.h> #include<string.h> int main(){ int sum=0,cnt=0; char a[99]; for(int i=1;i<=13;i++){ scanf("%c",&a[i]);//格式要正确 } for(int i=1;i<=12;i++){ if(a[i]!='-'){ cnt++; sum=sum+(a[i]-'0')*cnt;//字符转为数字 } } if(sum%11<10) sum=sum%11+'0';//数字转为字符 else if(sum%11==10) sum='X'; if(a[13]==sum){ printf("Right"); return 0; } else{ a[13]=sum;//不要忘了修改最后一位 for(int j=1;j<=13;j++){ printf("%c",a[j]); } } return 0; } ``` a[i] 减去 '0' 就能得到真正的数,同理,sum加上'0'就能得到对应的字符。 '0'就是0所对应的ASCII值。
by zhouruoheng @ 2023-10-19 23:04:21


@[zhouruoheng](/user/769839) 谢谢
by FYH666666 @ 2023-10-20 12:41:25


|