该校验的过程:
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整除,认定校验通过。
请编写一个程序,从键盘输入卡号,然后判断是否校验通过。通过显示:“成功”,否则显示“失败”。
比如,用户输入:356827027232780 程序输出:成功
#include <stdio.h>
#include <string.h>
int main(){
char nt[20];
gets(nt);
int n[20],i,sum1=0,sum2=0,sum;
for(i=0;nt[i]!='\0';i++){ //转换整形数组
n[i] = nt[i] - '0';
printf("%d\n",n[i]);
//getchar();
}
for(i=0;n[i]<strlen(nt);i++){ //分情况 奇就加 偶就判断再加
if((i+1)%2){
sum1 += n[i];
//printf("sum1=%d,",sum1);
}
else{
n[i] *= 2;
if(n[i]>9) n[i] -= 9;
sum2 += n[i];
}
}
sum = sum1+sum2;
printf("%d,%d,%d",sum1,sum2,sum);
printf("%s",sum%10==0?"是":"不是");
getchar();
}
文章由http://www.400815.com原创,转载请注明。