题解 | [NOIP2008]ISBN号码

[NOIP2008]ISBN号码

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

#include <stdio.h>
int main() {
    char arr[13];//题目需要创建13个字符(包含数字);
    int i, j; //创建两个变量用于实现循环(数组遍历);
    int sum = 0; //求和变量
    scanf("%s", arr); //向数组输入数据;

    for (i = 0, j = 1; i < 11;
            i++) { //这里是为了取出9位数字乘1、2、3、4、5.....9的和;
        if (arr[i] != '-') { //判断字符为- 不做计算;
            sum += (arr[i] - '0') *
                   j; //这里求和,减'0'为了将输入字符转为数字;
            j++;
        }
    }

    int qy = sum % 11; // 计算校验和模11的结果

    // 获取输入的校验码(最后一个字符)
    char check_char = arr[12];

    // 判断计算结果与输入是否一致
    if ((qy == 10 && check_char == 'X') || (qy == check_char - '0')) {
        printf("Right");
    } else {
        // 输出前12个字符(原ISBN的前缀)
        for (i = 0; i < 12; i++) {
            printf("%c", arr[i]);
        }

        // 根据计算结果输出正确的校验码
        if (qy == 10) {
            printf("X");
        } else {
            printf("%d", qy);
        }
    }

    return 0;
}

全部评论

相关推荐

07-29 14:27
门头沟学院 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
程序员牛肉:不用想,肯定是被卡学历了。 简历其实没什么大问题,就中规中矩的及格简历。但问题就在于有太多学历比你好的人了。所以即使你们的能力一样,人家也更加倾向于约面学历更好的。
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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