C語言編寫身份證確認程序,Linux版

身份證驗證程序原理

        將身份證前17位數字依次和以下17個數字相乘

(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2)

然後將所有的乘積相加對11取餘,根據餘數從以下11個數字中找到校驗碼

(1,0,X,9,8,7,6,5,4,3,2,1)

把校驗碼和身份證第18位比較,相同身份證爲真,否則爲假

#include<stdio.h>

int main()
{
	long long ID;  //定義一個變量存儲身份證號碼
	int i,temp,arr[18];
	int sum=0,a[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
	char b[]={'1','0','X','9','8','7','6','5','4','3','2'};

	printf("請輸入您的身份證號碼:");
	scanf("%lld",&ID);

        //將身份證逐位取出放在數組arr中	
	for(i=0;i<18;i++)
	{
		arr[17-i] = ID%10;
		ID/=10;
	}
	
	for(i=0;i<17;i++)
	{
		sum+=arr[i]*a[i];		
	}
	
	sum%=11;
	temp = b[sum]-'0';  //將字符轉換成數字存在temp中
	
	if(temp==arr[17])
		printf("身份確認成功!\n");
	else 
		printf("身份確認失敗!\n");

	return 0;
}

以上代碼存在一個問題,當身份證最後一位爲X時程序就會出錯,至於怎麼改,讀者可自行思考一下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章