緣由
福有天說 : 某學C七天就做出ID產生器了耶
學了這麼久C的我怎麼可以沒有寫出ID產生器
這件事情一直困擾了我好久
於是有一天
我生氣了
趁著媽祖婆在床上看JAVA
於是 不能輸系列開始了
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i = 0,s[7] = {0},si[7] = {0},sexsw = 0,sex = 0,city = 0,city2 = 0,sum = 0,check = 0;
char taiwan_city;
fflush(stdin);
srand(time(NULL));
printf("男 : 1 女 : 2\n");
scanf("%d",&sex);
printf("請輸入縣市 : (大寫)\n");
printf("A 台北市, B 台中市, C 基隆市, D 台南市, E 高雄市, F 台北縣, G 宜蘭縣,\n");
printf("H 桃園縣, I 嘉義市, J 新竹縣, K 苗栗縣, L 台中縣, M 南投縣, N 彰化縣,\n");
printf("O 新竹市, P 雲林縣, Q 嘉義縣, R 台南縣, S 高雄縣, T 屏東縣, U 花蓮縣,\n");
printf("V 台東縣, W 金門縣, X 澎湖縣, Y 陽明山管理局, Z 連江縣\n");
fflush(stdin);
scanf("%c",&taiwan_city);
if (taiwan_city > 97)
taiwan_city = taiwan_city - 32;
switch(taiwan_city)
{
case 'A' : city = 10;
break;
case 'B' : city = 11;
break;
case 'C' : city = 12;
break;
case 'D' : city = 13;
break;
case 'E' : city = 14;
break;
case 'F' : city = 15;
break;
case 'G' : city = 16;
break;
case 'H' : city = 17;
break;
case 'I' : city = 34;
break;
case 'J' : city = 18;
break;
case 'k' : city = 19;
break;
case 'L' : city = 20;
break;
case 'M' : city = 21;
break;
case 'N' : city = 22;
break;
case 'O' : city = 35;
break;
case 'P' : city = 23;
break;
case 'Q' : city = 24;
break;
case 'R' : city = 25;
break;
case 'S' : city = 26;
break;
case 'T' : city = 27;
break;
case 'U' : city = 28;
break;
case 'V' : city = 29;
break;
case 'W' : city = 32;
break;
case 'X' : city = 30;
break;
case 'Y' : city = 31;
break;
case 'Z' : city = 33;
break;
}
for (i = 0;i < 7;i++)
s[i] = rand () % 10;
sum = ( city / 10 ) + ( ( city % 10 ) * 9 ) + ( sex * 8 ) +( s[0] * 7 ) +
( s[1] * 6 ) + ( s[2] * 5 ) + ( s[3] * 4 ) + ( s[4] * 3) +
( s[5] * 2) + ( s[6] * 1);
sum = sum % 10;
check = 10 - sum;
printf("%c",taiwan_city);
printf("%d%d%d%d%d%d%d%d%d",sex,s[0],s[1],s[2],s[3],s[4],s[5],s[6],check);
system("pause");
}
身份證產生器其實不難只是一公式而已
(城市號碼 / 10) + ((城市號碼 % 10) * 9) + (性別 * 8) + (第一碼 * 7) + (第二碼 * 6) +...去產生最後一個檢查碼
最後感謝俊x大大的C讓我學會了pointer + struct
留言列表