题解 | #[NOIP2008]ISBN号码#

[NOIP2008]ISBN号码

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

#include <stdio.h>

int main()
{
    int i = 0;
    int n = 1;
    int sum=0;
    char arr[13] = { 0 };
    scanf("%s", arr);//输入字符串
    for (i = 0; i < 12; i++)
    {
        if (arr[i] == '-')
            continue;//检测分隔符
        sum += ((arr[i] - 48) * n);//char类型存储为ASCII码值 '0'的ASCII码值为48
	                               //故arr[i]-48即为该数位上数字
        n++;//n即为所需乘数
    }
    int z = sum % 11;
    if (z == (arr[i] - 48) || z == 10 && arr[i] == 'X')
        printf("Right\n");//判断识别码是否正确
    else
    {
        if (z == 10)
            arr[i] = 'X';
        else
            arr[i] = (z + 48);//(z+48)原因同上
        printf("%s\n", arr);
    }
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务