全部阵亡,求助啊

P1055 [NOIP2008 普及组] ISBN 号码

psyche_xin @ 2024-12-02 11:50:49

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a[9]={0};
    char p;
    int i=1;
    int d=0;
    while(i<=10)
    {
        if(i==2||i==5)
        {
            scanf("%c%d",&p,&a[i-1]);
             d=d+a[i-1]*i;
        }
        else if(i==10)
        {
             scanf("%c",&p);
        }
        else
        {
            scanf("%d",&a[i-1]);
            d=d+a[i-1]*i;   
        }
        i++;
    }

    if(p=='X'&&d%11==10||(p-'0')==d/11)

    printf("Right");
    else if((d/11)!=10)
          {printf("%d-%d%d%d-%d%d%d%d%d-",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);
        printf("%d",d%11);}
    else
    printf("%d-%d%d%d-%d%d%d%d%d-X",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);

}

by Arefa @ 2024-12-02 12:12:57

使用 scanf("%d",&a[i-1])读入数据的时候,并不是一位一位地读进来,例如对于 0-670-82162-4,读入了数字 0 和字符 '-' 之后,再读入一个数字,会得到 670 而不是 6。


by psyche_xin @ 2024-12-02 12:16:54

!感谢你的帮助,完全没想到@Arefa


|