题解 | #[NOIP2008]ISBN号码#

[NOIP2008]ISBN号码

https://www.nowcoder.com/practice/95712f695f27434b9703394c98b78ee5

#include <stdio.h>

int main()
{

    //13个 数字
    //int arr[100] = { 0 };
    char arr[100] = { 0 };
    //输入
    for (int i = 1; i <= 13; i++)
    {
        scanf("%c", &arr[i]);
    }

    //求和
    int sum = 0;
    int j = 1;//用于数字 1 ~~ 9
    for (int i = 1; i <= 11; i++, j++)
    {
        if (arr[i] == '-')//如果遇到 '-' 号了 j 就 -- , 保证对应相乘.
        {
            j--;
        }
        else
        {
            sum = (arr[i] - '0') * j + sum;
        }

    }

    //计算出了 sum
    //求识别码
    int know = sum % 11;

    //判断识别码是否正确
    if( arr[13] == 'X')
    {
        arr[13] = 10 + '0';
    }
    if (arr[13] - '0' == know )
    {
        printf("Right\n");
    }
    else
    {
        arr[13] = know;
        //输出
        for (int i = 1; i <= 13; i++)
        {
            if (i == 13)
            {
                if (know == 10)
                {
                    printf("X");
                }
                else
                {
                    printf("%d", know);
                }
            }
            else
            {
                printf("%c", arr[i]);
            }
        }
    }
    return 0;
}

全部评论

相关推荐

点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务