不是,我这个代码每次测试的分怎么还不一样

P1055 [NOIP2008 普及组] ISBN 号码

NeuroNO1 @ 2024-12-23 21:36:13

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
    char str[13];
    char x;
    int sum=0,cnt=1;
    fgets(str, 13, stdin);
    scanf("%c",&x);
    char *p=str;
    int len=strlen(str);
    while (*p) {
        if (*p=='-') {
            p++;
        }
        if (*p>='0' && *p<='9') {
            sum+=(*p-'0')*cnt;
            cnt++;
        }
        p++;
    }
    int k;
    k=sum%11;
    if (k==10&&x=='X') {
        printf("Right");
    }
    else if (k!=10&&(x-'0')==k) {
        printf("Right");
    }
    else if (k!=10&&(x-'0')!=k) {
        printf("%s%d",str,k);
    }else if (k==10&&x!='X') {
        printf("%sX",str);
    }
    return 0;

by NeuroNO1 @ 2024-12-23 21:36:50

我第一次测试70分,第二次80分,第三次90分,.....最后一次通过了。。什么灵异现象


by Grammar__hbw @ 2024-12-23 21:39:29

@NeuroNO1 UB了,读入13个字符需要开14个char的数组


by NeuroNO1 @ 2024-12-23 21:57:14

@Grammar__hbw 蟹蟹佬(好快的回复速度)www


by NeuroNO1 @ 2024-12-23 22:00:28

@Grammar__hbw bu dui阿,为啥我改成14个还是会出现同样的现象


by Grammar__hbw @ 2024-12-23 22:03:19

@NeuroNO1 我不知道fgets的空字符算不算


|