程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 15位身份證轉18位的C語言實現

15位身份證轉18位的C語言實現

編輯:關於C語言
 

#include <stdio.h>

int tran_15_to_18( char* cert_no )
{
char resultID[19];

const char Weight[] = { 7, 9, 10, 5, 8, 4, 2, 1, 6 , 3, 7, 9, 10, 5, 8 , 4, 2 };
const char Check[] = { '1', '0' , 'X', '9', '8', '7', '6','5', '4', '3', '2' };

int i, sum, mod;

if (cert_no == NULL)
{
return -1;
}

memset(resultID, 0, sizeof(resultID));

strncpy(resultID, cert_no, 6);
strcat(resultID, "19");
strncat(resultID, cert_no+6, 9);

sum = 0;
for( i = 0 ; i < 17 ; i++)
{
sum += ( resultID[i] - 48 ) * Weight[i];
}

mod = sum % 11;

resultID[17] = Check[mod];
resultID[18] = '\0';

strcpy(cert_no, resultID);
return 0;

}

int main()
{
char p[21] = "320521720807225 ";
puts(p);
tran_15_to_18(p);
puts(p); /* 320521197208072253 */

return 0;
}

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved