样例正确,但是运行错误?为什么啊啊啊

P1055 [NOIP2008 普及组] ISBN 号码

spindrift @ 2023-11-09 19:37:43

#include<stdio.h>

int main() {
    char a[14];
    char ch;
    int i = 0;
    int sum = 0;
    int mod;
    char b;
    while (ch = getchar(), ch != '\n') {
        if (ch != '-') {    //读入所有的数字
            a[i] = ch;
            i++;
        }
    }
    a[i] = '\0';            
    for (i = 1; i <= 9; i++) {      //将所有数字依次乘1-9,和为sum
        sum += (a[i - 1] - '0') * i;
    }                       
    mod = sum % 11;         //mod为余数
    if (mod == 10) {        //将正确的识别码储存在b中
        b = 'X';
    }
    else b = mod + '0';     
    if (b == a[9]) {
        printf("Right");
    } 

    else {
        a[9] = b;           //用正确的识别码代替a[9],a[9]为识别码应在的位置
        printf("%c-%c%c%c-%c%c%c%c%c-%c", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9]);
    }
    return 0;
}

by inarticulate_stupid @ 2023-11-16 21:27:59

@spindrift 你上面b==a[9]应该改为b==a[8],毕竟你的a下标是从0开始的


by spindrift @ 2023-11-17 15:08:09

@zhengdaxin 好的 谢谢啦


|