蓝桥杯5(北理工复试上机题1)

1.题目

身份证号的校验身份证号码共18位,最后一位是校验位A[18] : aaaaaabbbbbbbbcccd
校验的规则是如下:

前十七位的权值分别是: W[17]:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
x=(A[0]*W[0]+A[1]*W[1]+A[2]*W[2]+…+A[16]*W[16]) mod 11

   x和校验位y的对应规则对应如下:

x:0 1 2 3 4 5 6 7 8 9 10
y:1 0 x 9 8 7 6 5 4 3 2

若y等于d则身份证号码正确
    输出格式:aaaaaabbbbbbbbcccd 正确
若y不等于d则身份证号码不正确
    输出格式:应为:aaaaaabbbbbbbbcccy

输入格式: 身份证号码

输出格式: 身份证号码 正确或者不正确

输入样例: 52242619811105565x 输出样例: 52242619811105565x 正确

2. 代码以及解析

  1. 这个题很简单,主要是为了先验证是否为18位,然后验证校验位
  2. 代码:
#include <iostream>
using namespace std;
int main()
{
    //输入权值数组
    int W[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
    //校验位对照表
    char check[] = {'1', '0', 'x', '9', '8', '7', '6', '5', '4', '3', '2'};
    cout << "请输入您的18位身份证号:" << endl;
    char A[17] = {'0'};
    cin >> A;
    //验证输入的身份证号是否为18位
    int num = strlen(A);
    //cout << num << endl;
    if (num != 18) {
        cout << "身份证号输入不完全,请再次输入。";
        return 0;
    }
    //创建辅助数组,将前17位存到辅助数组中
    int B[17] = {0};
    for (int i = 0; i < 17; i++)
        B[i] = (int)A[i] - 48;

    //计算前17位的权值之和MOD11
    int sum = 0;
    for (int j = 0; j < 17; j++)
        sum += W[j] * B[j];
    int x = sum % 11;
    int y = check[x] - 48;
    if (check[x] == A[17])
    {
        cout << A;
        cout << " "
             << "正确" << endl;
        system("pause");
        return 0;
    }
    else
    {
        for (int i = 0; i < 17; i++)
            cout << B[i];
        if (check[x] == 'x')
            cout << 'x' << endl;
        else
            cout << y << endl;
        system("pause");
        return 0;
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
北京理工大学的研究生考试是非常有竞争力的,被称为中国的MIT。其中,考研复试的C试是技术类专业考生需要进行的一部分。以下是对北京理工考研复试C试的回答。 北京理工大学考研复试C试主要涉及技术类专业的知识和能力。试内容通常会围绕专业领域的基础知识、实践能力和解决问的能力。试旨在考察考生的综合素养和专业能力是否与该专业要求相符。 在回答C试时,首先要全面理解目要求,明确目的关键词和考察的知识点。接下来,需要找出问的关键点,分析问的本质,并提出解决问的方法或策略。在回答问时,要注意语言表达的准确性和逻辑性,尽量用简明扼要的语言阐述观点,清晰地展示自己的思路和解决问的能力。 在准备C试的过程中,考生应该通过认真学习专业知识,多做相关的实验和项目,提高自己的实践能力。同时,可以参加一些相关的讨论组织或科研项目,与其他同行交流,提高自己的解决问的能力。此外,要经常关注专业领域的最新动态,了解前沿的研究成果和发展方向,做到知行合一。 总之,北京理工大学考研复试C试对技术类专业考生来说是一个重要的考察环节。通过深入学习专业知识,提高实践能力和解决问的能力,考生可以更好地回答C试,展现自己的专业素养,从而在竞争激烈的考研环境中脱颖而出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值