緣由

福有天說 : 某學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

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 ffyy99 的頭像
    ffyy99

    喜歡亂搞的世界

    ffyy99 發表在 痞客邦 留言(0) 人氣()