博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
信用卡号的验证
阅读量:7027 次
发布时间:2019-06-28

本文共 911 字,大约阅读时间需要 3 分钟。

【信用卡号的验证】

当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,

因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。
该校验的过程:
1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
3、将奇数位总和加上偶数位总和,结果应该可以被10整除。
例如,卡号是:5432123456788881

则,奇数位和=35

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

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

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

【参考测试用例】

356406010024817 成功
358973017867744 成功
356827027232781 失败
306406010024817 失败
358973017867754 失败
因为输入时候数据中间无空格。所以用字符串。
#include<stdio.h>
main()
{
char a[16]={0};
int sum1,sum2,temp;
for(int j=0;j<1000;j++)
{
sum1=0;
sum2=0;
scanf("%s",a);
for(int i=14;i>=0;i-=2)
{
sum1+=(a[i]-'0');
}
for(int i=13;i>0;i-=2)
{
temp=2*(a[i]-'0');
if(temp>=10)
{
temp-=9;
sum2+=temp;
}
else
{
sum2+=temp;
}
}
if((sum1+sum2)%10==0)
{
printf("成功\n");
}
else
{
printf("失败\n");
}
}
return 0;
}

转载于:https://blog.51cto.com/13176924/2088040

你可能感兴趣的文章
20145234黄斐《Java程序设计》第六周学习总结
查看>>
【CLRS】《算法导论》读书笔记(四):栈(Stack)、队列(Queue)和链表(Linked List)...
查看>>
hibernate 和 mybatis区别
查看>>
互联网广告综述之点击率特征工程
查看>>
HDU3421 Max Sum II【序列处理】
查看>>
POJ NOI MATH-7653 地球人口承载力估计
查看>>
iOS UI高级之网络编程(HTTP协议)
查看>>
使用cocoaPods import导入时没有提示的解决办法
查看>>
iOS数据持久化存储之归档NSKeyedArchiver
查看>>
JavaScript面向对象
查看>>
Intellij修改模板代码
查看>>
2.页面布局示例笔记
查看>>
一些老游戏CPU 100%占用的解决方法
查看>>
f5基本介绍
查看>>
博前语
查看>>
Java SE核心之一:常用类,包装类,其他基本数据类型包装类。
查看>>
郑捷《机器学习算法原理与编程实践》学习笔记(第二章 中文文本分类(一))...
查看>>
python (ploit)
查看>>
Android 用achartengine 画折线图怎么显示不正确
查看>>
程序简单的测试与升级(暨实践第一次作业)
查看>>