美文网首页C语言
挑战蓝桥杯之“信用卡号验证”

挑战蓝桥杯之“信用卡号验证”

作者: 花开终落_196a | 来源:发表于2018-10-29 14:59 被阅读0次

挑战蓝桥杯之“信用卡号验证”

信用卡号验证


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

该校验的过程:

      1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。

      2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。

      3、将奇数位总和加上偶数位总和,结果应该可以被10整除。

      例如,卡号是:5432123456788881

      则奇数、偶数位(用红色标出)分布:5432123456788881

      奇数位和=35

      偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和=35。

       最后35+35=70 可以被10整除,认定校验通过。

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

      比如,用户输入:

356406010024817 

      程序输出:成功

【程序测试参考用例】

       356406010024817     成功

      358973017867744     成功

      356827027232781     失败

      306406010024817     失败

      358973017867754     失败

小编现将编的代码展示如下,欢迎大家批评与纠正:


#include<stdio.h>

#include<string.h>

int main()

{

char a[20];   //无论哪个国家的信用卡号均不超过20位 

int b,i,len,ji=0,ou=0;

scanf("%s",&a);

/*求数组长度*/

len=strlen(a);

if(len%2==0)

{

for(i=len-1;i>=0;i=i-2)

{

b=a[i]-'0';

b=b*2;

if(b>9)

b=b-9;

ou=ou+b;

}

for(i=len-2;i>=0;i=i-2)

{

b=a[i]-'0';

ji=ji+b;

}

else

{

for(i=len-1;i>=0;i=i-2)

{

b=a[i]-'0';

ji=ji+b;

}

for(i=len-2;i>=0;i=i-2)

{

b=a[i]-'0';

b=b*2;

if(b>9)

b=b-9;

ou=ou+b;

}

}

if((ji+ou)%10==0)

printf("PASS!");

else

printf("FAIL!");

// printf("%d",len);

return 0;

}

欢迎大家留言及讨论!​

相关文章

  • 挑战蓝桥杯之“信用卡号验证”

    挑战蓝桥杯之“信用卡号验证” 信用卡号验证 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这...

  • 银行卡号验证

    代码验证银行卡号

  • 蓝桥杯 基础训练 Python版 0

    呃,是不是这篇文章应该叫 蓝桥杯之从入门到放弃 ? 感谢蓝桥杯,让我学了Python。但是由于近期种种事情,已经打...

  • 正则表达式

    最近学习正则表达式,留下读书笔记,以备查阅。 作用 数据验证,例如验证一串字符串中是都包含手机号码、信用卡号码等;...

  • ES reduce 一行代码解决信用卡号验证问题

    背景 女票 JAVA 课程有一道作业题,验证信用卡号是否合法。 实验作业longer 9月30号 星期五 12:0...

  • 挑战蓝桥杯之 —— 一步之遥

    挑战蓝桥杯之 —— 一步之遥 1.问题描述: 从昏迷中醒来,小明发现自己被关在X星球的废矿车里。 矿车停在平直的废...

  • 正则

    /********** 方法一览表 **********//* 验证银行卡号是否正确 车牌号验证 检...

  • 连连支付认证支付产品

    1、同卡进出:验证四要素——姓名、身份证、银行卡号、银行预留手机号,二次支付无需重新录入卡号,直接发送短信验证码,...

  • 验证银行卡号正则

    //验证银行卡号 public static boolean checkBankCard(String car...

  • 蓝桥杯

    明天就是蓝桥杯省赛了,今天早点睡吧,没事就是一个小比赛,没什么的。大不了就去打打酱油吧。早早洗漱好,就上了床,可是...

网友评论

    本文标题:挑战蓝桥杯之“信用卡号验证”

    本文链接:https://www.haomeiwen.com/subject/wjmbtqtx.html