身份证号升级
問題描述
從1999年10月1日開始,公民身份證號碼由15位數字增至18位。(18位身份證號碼簡介)。升級方法為:
1、把15位身份證號碼中的年份由2位(7,8位)改為四位。
2、最后添加一位驗證碼。驗證碼的計算方案:
將前 17 位分別乘以對應系數 (7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2) 并相加,然后除以 11 取余數,0-10 分別對應 1 0 x 9 8 7 6 5 4 3 2。
請編寫一個程序,用戶輸入15位身份證號碼,程序生成18位身份證號碼。假設所有要升級的身份證的四位年份都是19××年 輸入格式 一個15位的數字串,作為身份證號碼 輸出格式 一個18位的字符串,作為升級后的身份證號碼 樣例輸入 110105491231002 樣例輸出 11010519491231002x #include"stdio.h"int main(){char a[20];int i,j,flag,sum=0;int b[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};char c[11]={'1','0','x','9','8','7','6','5','4','3','2'};scanf("%s",&a);for(i=14;i>5;i--){a[i+1]=a[i]; }a[6]='9';for(i=15;i>5;i--){a[i+1]=a[i];}a[6]='1';for(i=0,j=0;i<17,j<17;i++,j++){sum+=(a[i]-'0')*b[j];}flag=sum%11;a[17]=c[flag];for(i=0;i<17;i++){printf("%d",a[i]-'0');}printf("%c",a[17]);return 0; }
1、把15位身份證號碼中的年份由2位(7,8位)改為四位。
2、最后添加一位驗證碼。驗證碼的計算方案:
將前 17 位分別乘以對應系數 (7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2) 并相加,然后除以 11 取余數,0-10 分別對應 1 0 x 9 8 7 6 5 4 3 2。
請編寫一個程序,用戶輸入15位身份證號碼,程序生成18位身份證號碼。假設所有要升級的身份證的四位年份都是19××年 輸入格式 一個15位的數字串,作為身份證號碼 輸出格式 一個18位的字符串,作為升級后的身份證號碼 樣例輸入 110105491231002 樣例輸出 11010519491231002x #include"stdio.h"int main(){char a[20];int i,j,flag,sum=0;int b[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};char c[11]={'1','0','x','9','8','7','6','5','4','3','2'};scanf("%s",&a);for(i=14;i>5;i--){a[i+1]=a[i]; }a[6]='9';for(i=15;i>5;i--){a[i+1]=a[i];}a[6]='1';for(i=0,j=0;i<17,j<17;i++,j++){sum+=(a[i]-'0')*b[j];}flag=sum%11;a[17]=c[flag];for(i=0;i<17;i++){printf("%d",a[i]-'0');}printf("%c",a[17]);return 0; }
總結
- 上一篇: Python基础学习笔记【廖雪峰】
- 下一篇: 黑马css学习笔记