C语言,才30

P1055 [NOIP2008 普及组] ISBN 号码

OobugoO @ 2023-02-02 16:21:24

下了第二个是对的,是不是输出字符串有问题?

#include <stdio.h>
int main()
{
    int sum=0;
    char a[13];
    scanf("%s",a);
    int i=1;
    int j=0;
    char b;
    while(j<11)
    {
        if(a[j]!='-')
        {
            sum+=((int)a[j]-48)*i;
            i++;
        }
        j++;
    }
    b=(sum%11!=10)?(char)(sum%11+48):'X';
    if(a[12]==b)
        printf("Right");
    else
    {
        a[12]=b;
        printf("%s",a);
    }
    return 0;
}

by Po7ed @ 2023-02-02 16:41:54

@OobugoO C风格字符串(char数组)结尾有一个\0,你数组开小了,结尾没有\0,导致输出错误。


by Po7ed @ 2023-02-02 16:42:37

char a[13];改成char a[14];即可


by Po7ed @ 2023-02-02 16:48:48


by OobugoO @ 2023-02-02 17:18:39

@Po7ed1 过了,万分感谢


|