日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

查验身份证2

發布時間:2023/11/27 生活经验 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 查验身份证2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

查驗身份證2


Time Limit: 1 Sec??Memory Limit: 128 MB?? 64bit IO Format: %lld

Description

一個合法的身份證號碼由17位數字(包含地區、出生日期和順序編號)加1位校驗碼組成。

校驗碼的計算規則如下:

(1)首先對前17位數字加權求和,權重分配為:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,3};

(2)然后將計算的和對11取模得到值Z;

(3)最后按照以下關系對應Z值與校驗碼M的值:

? ? ?Z: 0 1 2 3 4 5 6 7 8 9 10

? ? ?M:9 8 7 6 5 4 3 2 1 0 X

現在給定一些身份證號碼,請你編寫程序驗證校驗碼的有效性。

?

Input

多組測試數據,每組測試數據在一行中給出1個18位身份證號碼。

?

Output

如果身份證號碼正確,輸出“OK”,否則輸出“Error”。

只要前17位全為數字且最后一位校驗碼計算準確,則號碼算正確。

?

Sample Input

111111111111111117
111111111111111110
222222222222222225
22222222222222222X
123456789012345677
135246789159357082
012345789632145974

?

Sample Output

OK
Error
OK
Error
Error
OK
Error

題目分析:

用我的24K純金狗眼來看……這應該是字符串!

%c 和 %d 的距離……就是48……


#include <stdio.h>
#include <stdlib.h>int main()
{int i, j;int f,z;char s[20];int m[11] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 10 };int q[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 3};int sum = 0;while(gets(s)!=NULL){sum = 0;f = 0;for(i=0;i<17;i++){s[i] -= 48;sum += s[i]*q[i];}z = sum%11;for(i=0;i<=10;i++){if(z==i){z=m[i];break;}}if(s[17]-48==z)f=1;if(s[17]=='X' && z==10)f=1;if(f==1)printf("OK\n");elseprintf("Error\n");}return 0;
}

?

?

總結

以上是生活随笔為你收集整理的查验身份证2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。