Crane
Search
Loading
分类
随机文章
标签云
ArchLinux
Earth
Fringe
Gtalk
Internet
LFS
Love
RegEx
STL
Trick
VHDL
abs
c
c++
code
css
echofon
firefox
fun
g++
game
gcc
geek
google
grep
hack
linux
math
md5
nginx
php
program
python
reader
script
sed
shell
tcpdump
usaco
vim
vimperator
virus
wikipedia
windows
二进制
位运算
危机边缘
哥德尔
大牛
希尔伯特
数据结构
日期
时间
星期五
正则表达式
漫画
生活
电影
程序员
算法
维基
编程
网络
美剧
菜鸟
越狱
输入法
黑色
最新评论
链接
功能
15身份证号码转18位的程序
以前在哪看到的,安全焦点吧!丢这做个备份
/*输入原来的15位身份证号码,产生新的18位身份证号码的程序*/ #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("输入原来的15位身份证号码,产生新的18位身份证号码\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", ret != -1 ? NewID : "Input Error!!"); }while(1); getch(); return 0; }