思路:
看題知意,按照題目意思模擬一下即可;
**如下,提交使用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有不是數字的,標記後退出迴圈 }if
(flag)
//id前17位是數字,則繼續檢查校驗位
else
}else}if
(count==n)
printf
("all passed");
return0;
}
【debug過程】:全部通過的時候,all passed 沒有列印出來,隨即檢查,在程式中是以count(查驗通過)的數量是否等於n來做條件的,但是在一開始檢查每個id的時候,大迴圈是用的while(n–),這就導致了最後n必然等於0,從而導致最後判斷條件錯誤;【改用for迴圈,或者迴圈之前把n複製乙份】 PAT 乙級1031 查驗身份證(C語言)
1031 查驗身份證 15 分 乙個合法的身份證號碼由17位地區 日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下 首先對前17位數字加權求和,權重分配為 然後將計算的和對11取模得到值z 最後按照以下關係對應z值與校驗碼m的值 z 012 3456 78910 m 10 x 987 654...
PAT乙級1031查驗身份證 15 分
乙個合法的身份證號碼由17位地區 日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下 首先對前17位數字加權求和,權重分配為 然後將計算的和對11取模得到值z 最後按照以下關係對應z值與校驗碼m的值 z 012 3456 78910 m 10 x 987 6543 2現在給定一些身份證號碼,請...
PTA乙級1031,查驗身份證
分析 設定乙個istrue函式判斷身份證號是否正常,如果不正常返回false。判斷每乙個給出的身份證號,如果不正常,就輸出這個身份證號,並且置flag 1表示有不正常的號碼 如果所有的號碼都是正常,即flag依舊等於0,則輸出all passed 在istrue函式中,先判斷前17位是否是數字,如果...