题解 | #[NOIP2008]ISBN号码#

[NOIP2008]ISBN号码

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

#include<stdio.h>
int main() {
    int ch[10], sum = 0, rem = 0;
    for (int i = 0; i < 10; i++) {
        scanf("%1d", &ch[i]);
        if (ch[i] < 10) {
            if (i == 0 || i == 3 || i == 8) scanf("-");
            if (i != 9) sum += ch[i] * (i + 1);  //计算数字和
        }
        if (ch[9] % 10 == 0) ch[9] = 10;  //输入识别码大于10时,ch[9]赋值10
    }
    rem = sum % 11;  //取余
    if (rem == ch[9])
        printf("Right");  //输入识别码与实际识别码相同时输出Right
    else {  //输入识别码与实际识别码不同
        for (int j = 0; j < 10; j++) {  //依次输出ISBN码,若余数大于10输出X
            if (ch[j] < 10) {
                ch[9] = rem;
                printf("%d", ch[j]);
            } else printf("X");
            if (j == 0 || j == 3 || j == 8) printf("-");
        }
    }
    return 0;
}
全部评论

相关推荐

昨天 12:43
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
贪食滴🐶:你说熟悉扣篮的底层原理,有过隔扣职业球员的实战经验吗
点赞 评论 收藏
分享
吃不饱的肱二头肌很想退休:tnnd 我以为选妹子呢,亏我兴高采烈的冲进来😠
投递快手等公司10个岗位
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务