全国软件专业人才开发与设计赛题之中等题“银行卡验证”

本文介绍了一种用于验证银行卡号有效性的算法。通过该算法,我们可以判断一个银行卡号是否符合规定的格式,具体步骤包括对卡号的奇数位求和、偶数位翻倍并调整,最终确保总和为10的倍数。

版权声明:版权归作者WeiSteven所有,转载请注明!

不是所有的银行卡都是有效地,它是遵循一定的规律的。

对于一个卡号,验证其证伪可以采用:

奇数位数字相加求和

偶数位每位乘以2,如果超过10,则减9作为此位数字,然后求偶数位和

 

奇数位和加上偶数位和应该是10的倍数。

如果不满足上述条件,则此银行卡号是非法的。

请编写程序,判断给定的银行卡号是否合法

 

参考答案:

代码
 1 #include <stdio.h>
 2 #include <string.h>
 3 int main()
 4 {
 5     //freopen("2_3.txt","r",stdin);
 6     char scard[100];//读取卡号数据
 7     int sumOdd=0;
 8     int sumEven=0;
 9     printf("输入卡号:\n");
10     while(scanf("%s",scard)!=EOF)
11     {
12         //初始化需要用的变量
13         sumOdd=0;
14         sumEven=0;
15         int lenString=strlen(scard);
16         //逆序进行偶奇数求和
17         for(int i=lenString-1;i>=0;i--)
18         {
19             if((lenString-i)%2==1)
20             {
21                 sumOdd+=scard[i]-'0';
22             }
23             else
24             {
25                 int stemp=(scard[i]-'0')<<1;//偶数是*2 判断大小
26                 sumEven+=(stemp);
27                 if(stemp>=10)
28                     sumEven-=(9);
29             }
30         }
31         if((sumOdd+sumEven)%10==0)
32             printf("成功\n");
33         else
34         {
35             printf("失败\n");
36         }
37         printf("输入卡号:\n");
38     }
39     return 1;
40 }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值