分析:設定乙個istrue函式判斷身份證號是否正常,如果不正常返回false。
判斷每乙個給出的身份證號,如果不正常,就輸出這個身份證號,並且置flag=1表示有不正常的號碼;如果所有的號碼都是正常,即flag依舊等於0,則輸出all passed;
在istrue函式中,先判斷前17位是否是數字,如果不是,直接return false;如果是,就將當前字元轉化為數字並與a[i]相乘,累加在sum中,對於第18位,如果是x要轉化為10,比較b[sum%11]和第18位是否相等,如果相等就返回true,不相等就返回false
#include
using namespace std;
int a[17]
=;int b[11]
=;string s;
//注意全域性變數的宣告
bool istrue()
sum+
=(s[i]
-'0'
)*a[i];}
int temp=
(s[17]==
'x')?10
:(s[17]
-'0');
return b[sum%11]
==temp;
}int
main()
}if(flag==0)
cout<<
"all passed"
;return0;
}
PAT乙級1031 查驗身份證
思路 看題知意,按照題目意思模擬一下即可 如下,提交使用g include using namespace std intmain char check 11 int n,count 0,wsum string id cin n for int k 1 k n k else 否則這個id前17有不是...
1031 查驗身份證 15
原題 思路 雖然容易,但是不細心,也挺耽誤時間.完整實現 include int main void 17個 int m 11 int wrong1 0 第1種錯誤 int flag 0 只要發生錯誤就標記為1 char id 19 最後一位放 0 int n int sum int i int j...
1031 查驗身份證 15
原題 思路 雖然容易,但是不細心,也挺耽誤時間.完整實現 include int main void 17個 int m 11 int wrong1 0 第1種錯誤 int flag 0 只要發生錯誤就標記為1 char id 19 最後一位放 0 int n int sum int i int j...