PTA乙級1031,查驗身份證

2021-09-25 18:11:57 字數 724 閱讀 3422

分析:設定乙個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...