请帮看看代码,为什么过不了

img


#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int i=0,j=0,sum=0,t=0;
    char a[14]={0};
    for(i=0;i<13;i++){
    scanf("%c",&a[i]);
        if(a[i]=='-'){
            continue;
        }else{
            j++; 
            sum +=(int)a[i]*j;
        }
    }
    getchar();
    t=sum%11;
    if(t==10){
        a[13]='X';
    }
    if((int)a[13]==t){
        printf("Right");
    }else{
        a[13]=t;
        printf("%s",a);
    }
    
    return 0;
}

这样写,供参考:

#include<stdio.h>
int main()
{
    int a[9], sum = 0; 
    char last; 
    scanf("%1d-%1d%1d%1d-%1d%1d%1d%1d%1d", 
        &a[0], &a[1], &a[2], &a[3], &a[4], &a[5], &a[6], &a[7], &a[8]); 
    scanf("-%c", &last); 
    for (int i = 1; i <= 9; i++) //求题目要求的总和
    {
        sum+=a[i-1]*i;
    }
    sum %= 11;//mod 11
    if (sum < 10 && sum == last - 48)//如果sum不是10并且等于题目给的最后一个数(last-48即为ascii码所对应的数字)
    {
        printf("Right");
        return 0;
    }
    if (sum == 10 && last == 'X') //如果sum=10并且last==X
    {
        printf("Right");
        return 0;
    }
    if (sum == 10) 
        last = 'X';
    else 
        last = sum + 48;
    printf("%d-%d%d%d-%d%d%d%d%d-%c", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], last);
    return 0;
}

【以下回答由 GPT 生成】

问题是由于在计算 sum 的过程中,没有正确地将字符转换为对应的数字,导致计算结果出错。

首先,将字符转换为数字的方法是将字符减去字符 '0' 的 ASCII 值,如 sum += (int)(a[i]-'0') * j;

其次,还需要在输出字符数组 a 之前添加一个空字符结尾,即 a[14]='\0';,否则会打印出乱码。

修改后的代码如下所示:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int i=0, j=0, sum=0, t=0;
    char a[14]={0};

    for(i=0; i<13; i++){
        scanf("%c", &a[i]);
        if(a[i]=='-'){
            continue;
        }else{
            j++;
            sum += (int)(a[i]-'0') * j;
        }
    }

    getchar();
    t = sum % 11;
    if(t == 10){
        a[13] = 'X';
    }

    a[14] = '\0';

    if((int)(a[13]-'0') == t){
        printf("Right");
    }else{
        a[13] = '0' + t;  // 转换为字符后存入数组
        printf("%s", a);
    }

    return 0;
}

这样修改之后,代码就能正确运行了。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^