70了,求大佬助力一波

P1055 [NOIP2008 普及组] ISBN 号码

nbq202412904430 @ 2024-09-11 23:23:53

#include<stdio.h>
int main()
{
    int mod[11]={0,1,2,3,4,5,6,7,8,9,'X'};
    char m[11];
    int y=0,b[11];
    scanf("%c-%c%c%c-%c%c%c%c%c-%c",&m[0],&m[1],&m[2],&m[3],&m[4],&m[5],&m[6],&m[7],&m[8],&m[9]);
    for(int i=0;i<9;i++)
    {
        b[i]=m[i]-'0';
        y=y+b[i]*(i+1);
    }
    if(m[9]>='0'&&m[9]<='9')b[9]=m[9]-'0';
    else b[9]='X';
    y=y%11;
    if(b[9]==y)printf("Right");
    else 
    {
        if(y==10&&m[9]=='X')printf("Right");
        else printf("%d-%d%d%d-%d%d%d%d%d-%d",b[0],b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],mod[y]);
    }
    return 0;
 } 

by sunhewei @ 2024-09-15 16:53:09

有可能是‘X'属于char类型 而mod数组是int类型 输出的时候出了点问题 可以先输出前面的 最后一位单独做判断 然后输出


|