PAT B1031 查验身份证(C++) 发表于 2018-11-22 | 分类于 PAT题解 | | 字数统计: 205 字 | 阅读时长 ≈ 1 分钟 PAT甲级目录 | PAT乙级目录 题目描述 B1031 查验身份证 解题思路简单的字符串处理。 也许陌生的知识点 isdigit() 判断字符是否为数字 所需头文件 cctype 代码示例:1234567891011121314151617181920212223242526#include <iostream>#include <string>#include <cctype>using namespace std;int main(){ int N, Z = 0, cnt = 0, weight[] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; char M[] = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'}; cin >> N; for(int i = 0; i < N; i++, Z = 0){ string id; bool valid = true; cin >> id; for(int j = 0; valid && j < id.length() - 1; j++){ if(isdigit(id[j]) == false) valid = false; if(valid) Z = Z + weight[j] * (int)(id[j] - '0'); } Z = Z % 11; if(id[17] != M[Z]) valid = false; if(valid == false){ cnt++; cout << id <<endl; } } if(cnt == 0) cout << "All passed" << endl; return 0;} 本文作者: Philo 本文链接: http://lulalap.com/2018/11/22/PAT-B1031-cpp/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!