求助求助!!测试数据都过不了

P1055 [NOIP2008 普及组] ISBN 号码

YangjinRun @ 2022-02-12 21:16:40

#include<bits/stdc++.h>
using namespace std;
int a,b,c,d,e,f,g,h,i,x,sum;
char n;
int main(){ 
    scanf("%d-%d%d%d-%d%d%d%d%d-%d",&a,&b,&c,&d,&e,&f,&g,&h,&i,&n);
    sum=a*1+b*2+c*3+d*4+e*5+f*6+g*7+h*8+i*9;
    if(n=='X') x=10;
    else x=int(n)-64;   
    if(sum%11==x)
        printf("Right");
    else
        printf("%d-%d%d%d-%d%d%d%d%d-%d",a,b,c,d,e,f,g,h,i,sum%11);
    return 0;
}

by tao915 @ 2022-02-12 21:26:42

你这么读入有问题吧,打印一下变量就知道了


by 8atemak1r @ 2022-02-12 21:28:43

@YangjinRun

#include<iostream>
using namespace std;
int a,b,c,d,e,f,g,h,i,x,sum;
char n;
int main(){ 
    scanf("%c-%c%c%c-%c%c%c%c%c-%c",&a,&b,&c,&d,&e,&f,&g,&h,&i,&n);
    sum=(a - 48)*1+(b - 48)*2+(c - 48)*3+(d - 48)*4+(e - 48)*5+(f - 48)*6+(g - 48)*7+(h - 48)*8+(i - 48)*9;
    // printf("%d %d %d %d %d %d %d %d %d\n",a,b,c,d,e,f,g,h,i);
    if(n=='X') x=10;
    else x=int(n)-48;   
    if(sum%11==x)
        printf("Right");
    else
        printf("%c-%c%c%c-%c%c%c%c%c-%d",a,b,c,d,e,f,g,h,i,sum%11);
    return 0;
}

by 8atemak1r @ 2022-02-12 21:29:40

@YangjinRun 你这样读入拿样例来举例子的话,输入之后 a=0 b=-670


by liangbowen @ 2022-02-12 21:31:25

大家都说什么呢,问题就一个,n的读入类型用错了


by MyozumiCoai @ 2022-02-12 21:34:44

@YangjinRun
scanf不能直接读入连在一起的数字,会被识别成是同一个数
比如样例的数字会被识别成

0 670 -82162 -4 0 0 0 0 0

by whl0807 @ 2022-02-18 19:45:36

读入不能用int,只能用字符串,int输入会被识别为同一个数字。


|