⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 银行卡号码的有效性检查程序.exe

📁 19位银行卡号码的有效性检查程序!源代码!
💻 EXE
字号:
/************************************************************
FileName:     card.c
Author:       yuanfen127
Date:         2007年1月21日
Description:  银行卡号码的有效性检查程序
Version:      1.0
Function List:
   1. int CreatBit(char *cdno, int length)     根据前面length-1位长度生成最后校验位
   2. int iCheckBit(char *sbuf)                调用CreateBit生成校验位和输入的比较
History:
      <author>  <time>         <version >   <desc>
***********************************************************/
#include <stdio.h>
#include <string.h>

main()
{
    char card_no[20];

    printf("请输入19位卡号:");
    scanf("%19s",card_no);

    printf("卡号:%s\n",card_no);

    /*CreatBit(card_no,strlen(card_no)-1);*/
    if ( strlen(card_no) < 19 )
    {
        printf("卡号长度错误\n");
        return -1;
    }

    if ( 0 != iCheckBit(card_no) )
    {
        printf("卡号错误!\n");
    }
    else
    {
        printf("卡号正确!\n");
    }
}

int CreatBit(char *cdno, int length)
{
    int CI[18]={1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2};
    int i,d,result;
    int chk_dig=0;

    if ( strlen(cdno) < length)
    {
        printf("输入的长度错,长度=%d\n",strlen(cdno));
        return -1;
    }

    for ( i=0; i<length; i++ )
    {
        d = cdno[i]-48;
        result = d * CI[i];
        chk_dig += result/10 + result%10;
    }

    chk_dig = 10 - chk_dig%10;
    chk_dig = (chk_dig==10) ? 0 : chk_dig;
    cdno[length] = chk_dig + 48;

    printf("检验位:%d\n",chk_dig);
    return 0;
}

int iCheckBit(char *sbuf)
{
    char    cardbuf[19];
    int     l_len;

    memcpy( cardbuf, sbuf, 19 );
    l_len = strlen(sbuf);
    l_len = l_len > 19 ? 19 : l_len ;
    if( (CreatBit(cardbuf, l_len - 1 ) != 0) || memcmp(sbuf, cardbuf, l_len))
    {
        return(-1);
    }
    return(0);
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -