输出的答案是错误的,感觉有些问题自己想不出来

P1055 [NOIP2008 普及组] ISBN 号码

wsqgh @ 2022-12-16 15:46:19

#include<iostream>
#include<string.h> 
using namespace std;

 int main()
 {
    string s;
    cin>>s;
    int ans;
    ans=s[0]*1+s[2]*2+s[3]*3+s[4]*4+s[6]*5+s[7]*6+s[8]*7+s[9]*8+s[10]*9; 
    if(ans%11==s[12])
    printf("Right");
    else if(ans%11<10 && ans%11!=s[12])
    printf("%d-%d%d%d-%d%d%d%d%d-%d",s[0],s[2],s[3],s[4],s[6],s[7],s[8],s[9],s[10],ans%11);
    else if(ans%11==10)
    printf("%d-%d%d%d-%d%d%d%d%d-X",s[0],s[2],s[3],s[4],s[6],s[7],s[8],s[9],s[10]);
     return 0;

 }

by Night_sea_64 @ 2022-12-16 16:06:00

@wsqgh

if(ans%11==s[12])

显然等号前面的是数,后面的是字符,要比较得让字符减去 '0'。

还有 ans%11=10 的情况下也可能有 right


by wsqgh @ 2022-12-16 18:14:03

@Netherite_sword_666 怎么将字符转换成数,不是很懂,可以帮我改一下代码嘛


by Stevehim @ 2022-12-16 20:54:53

@wsqgh

if(ans%11 == s[12] - '0')

试一下。。。


by wsqgh @ 2022-12-16 22:57:22

@Stevehim 还是错的


by Stevehim @ 2022-12-17 06:46:52

@wsqgh 哦我好像知道了,把每个s[x] y 改为(s[x] - '0') y


by wsqgh @ 2022-12-18 11:19:56

@Stevehim 好的,我试一下


|