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

📄 15to18_src.c

📁 15位身份证转18位身份证号码,C语言生成
💻 C
字号:
#include "stdio.h" 
#include "string.h" 
#include "conio.h" 

/* 
* gen New 18 ID Card from old 15 ID 
*/ 
char genNewID( char ID[], char NewID[]) 
{ 
    int W[18] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1}; 
    char A[11] = {'1','0','x','9','8','7','6','5','4','3','2'}; 
    int i,j,S; 

    if(strlen(ID) != 15) 
        return -1; 

    memcpy( NewID, ID, 6 ); 
    NewID[6]='1'; 
    NewID[7]='9'; 
    NewID[8]=0; 
    strcat( NewID, &ID[6] ); 
    S = 0; 
    for(i=0;i<17;i++) 
    { 
        j = (NewID[i] - '0') * W[i]; 
        S = S + j; 
    } 

    S = S % 11; 
    NewID[17] = A[S]; 
    NewID[18] = 0; 

    return A[S]; 
} 

int main(int argc, char* argv[]) 
{ 
    char ID[20], NewID[20], ret; 

    puts("Please enter the old IDcard Number(15Numbers),\n"); 
    puts("The program will make the New IDcard Number(18Numbers).\n"); 
    do{ 
        printf("Input your old 15 ID Card: "); 
        scanf( "%s", ID ); 
        if(stricmp(ID, "exit") == 0)break; 
        ret = genNewID( ID, NewID ); 
        printf("Your New 18 ID Card:       %s \n\n", ret != -1 ? NewID : "Input Error!!"); 
    }while(1); 

    getch(); 

    return 0; 
} 

⌨️ 快捷键说明

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