蓝桥杯——信号卡效验器

编程入门 行业动态 更新时间:2024-10-09 06:26:42

蓝桥杯——信号卡<a href=https://www.elefans.com/category/jswz/34/1731793.html style=效验器"/>

蓝桥杯——信号卡效验器


当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。

该校验的过程:
1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
3、将奇数位总和加上偶数位总和,结果应该可以被10整除。

例如,卡号是:5432123456788881


逆向奇数位为 4 2 2 4 6 8 8 1 和 = 35
逆向偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和 = 35。
最后 35 + 35 = 70 可以被10整除,认定校验通过。

请编写一个程序,从标准输入获得卡号,然后判断是否校验通过。
通过显示:“成功”,否则显示“失败”。

比如,
输入:356827027232780
程序输出:成功

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<cmath>
#include<cstring>
using namespace std;
int main()
{
    char a[20];
    cin>>a;
    int i,ou=0,ji=0;
    int sum;
    i=strlen(a);
    for(;i>0;i=i-2)
    {
        ji=a[i-1]-'0'+ji;
    }
    for(i=strlen(a);i>0;i=i-2)
        {
            if((a[i-2]-'0')*2>9)
            {
                
                ou=ou+((a[i-2]-'0')*2-9);
            }
            else if((a[i-2]-'0')*2<=9)
            ou=(a[i-2]-'0')*2+ou;
        }
    sum=ji+ou;
    if(sum%10==0)
    {
        cout<<"成功"<<endl;
    }
    else
    cout<<"失败"<<endl; 
    return 0;
}

更多推荐

蓝桥杯——信号卡效验器

本文发布于:2024-02-14 11:57:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1763147.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:效验   信号   蓝桥杯

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!