c++自动生成身份证号码

来源:互联网 发布:java多线程应用场景 编辑:程序博客网 时间:2024/06/10 09:21

随手谢谢,供大家注册帐号时候使用。因为为了方便,所以地域都是用的省会。

#include "iostream"#include "stdlib.h"#include "time.h"using namespace std;int Finish_ID[20];int l=0;char GetKeyNum(int Finish_ID[]){char keyword;char Right_Val[20]={'1','0','X','9','8','7','6','5','4','3','2'};int Cmp_ID[20]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};int Sum_ID=0;int Temp_ID[20];//用来临时存储乘后数据for(int i=0;i<17;i++){Temp_ID[i]=Cmp_ID[i]*Finish_ID[i];}for (int i=0;i<17;i++){Sum_ID=Sum_ID+Temp_ID[i];}Sum_ID=Sum_ID%11;keyword = Right_Val[Sum_ID];return keyword;}void split(int Number,int count,int temprary){int k=l;temprary=temprary/10;for (l;l<k+count;l++){Finish_ID[l]=Number/temprary;Number=Number%temprary;temprary=temprary/10;}return;}int Digit(int Number){int temprary=1;int count=0;while (1){if (Number<temprary){count++;goto outport;}else{temprary=temprary*10;count++;}}outport:count--;split(Number,count,temprary);return count;}int main(){srand((unsigned )time(NULL));int Addr_ID;//110000-659001  110000 + rand()%549001int Year_ID;//1900-19961900 + rand()%97int Month_ID;//01-121 + rand()%11int Day_ID;//01-281 + rand()%27int Key_ID;//100-999100+rand()%899int Cmp_ID;Addr_ID=(1+rand()%5)*100000+(1+rand()%2)*10000;Digit(Addr_ID);Year_ID=1900 + rand()%97;Digit(Year_ID);Month_ID=10 + rand()%2;Digit(Month_ID);Day_ID=10 + rand()%17;Digit(Day_ID);Key_ID=100+rand()%899;Digit(Key_ID);char keyword;keyword= GetKeyNum(Finish_ID);for (int i=0;i<17;i++){cout<<Finish_ID[i];}cout<<keyword;cout<<endl;getchar();getchar();return 0;}


0 0
原创粉丝点击