用if语句和switch语句查验身份证
时间: 2023-12-22 20:26:07 浏览: 76
身份证号码的校验码是通过对前17位进行加权求和并对11取余得到的,而身份证号码的第18位就是校验码。因此,我们可以通过对前17位进行加权求和并对11取余,然后将结果与身份证号码的第18位进行比较来判断身份证号码是否合法。
使用if语句和switch语句可以实现多分支结构的程序设计,可以根据不同的情况执行不同的代码块。在身份证号码的校验中,我们可以使用if语句或switch语句来判断校验码是否与身份证号码的第18位一致,从而判断身份证号码是否合法。
具体实现方法如下:
1. 首先,我们需要将身份证号码的前17位分别乘以对应的权重,并将结果相加,得到一个加权和。
2. 然后,将加权和除以11并取余,得到一个余数。
3. 最后,将余数与身份证号码的第18位进行比较,如果相等,则输出“身份证号passed”,否则输出“身份证号Fail”。
使用if语句实现的代码如下:
```
// 假设身份证号码的前17位存储在数组idNumber中,第18位存储在变量checkCode中
int sum = 0;
for (int i = 0; i < 17; i++) {
sum += (idNumber[i] - '0') * weight[i];
}
int remainder = sum % 11;
if (checkCode == 'X') {
checkCode = 10;
}
if (remainder == checkCode) {
cout << "身份证号passed" << endl;
} else {
cout << "身份证号Fail" << endl;
}
```
使用switch语句实现的代码如下:
```
// 假设身份证号码的前17位存储在数组idNumber中,第18位存储在变量checkCode中
int sum = 0;
for (int i = 0; i < 17; i++) {
sum += (idNumber[i] - '0') * weight[i];
}
int remainder = sum % 11;
if (checkCode == 'X') {
checkCode = 10;
}
switch (remainder) {
case 0:
if (checkCode == 1) {
cout << "身份证号Fail" << endl;
} else {
cout << "身份证号passed" << endl;
}
break;
case 1:
if (checkCode == 0) {
cout << "身份证号Fail" << endl;
} else {
cout << "身份证号passed" << endl;
}
break;
case 2:
if (checkCode == 10) {
cout << "身份证号Fail" << endl;
} else {
cout << "身份证号passed" << endl;
}
break;
case 3:
if (checkCode == 9) {
cout << "身份证号Fail" << endl;
} else {
cout << "身份证号passed" << endl;
}
break;
case 4:
if (checkCode == 8) {
cout << "身份证号Fail" << endl;
} else {
cout << "身份证号passed" << endl;
}
break;
case 5:
if (checkCode == 7) {
cout << "身份证号Fail" << endl;
} else {
cout << "身份证号passed" << endl;
}
break;
case 6:
if (checkCode == 6) {
cout << "身份证号Fail" << endl;
} else {
cout << "身份证号passed" << endl;
}
break;
case 7:
if (checkCode == 5) {
cout << "身份证号Fail" << endl;
} else {
cout << "身份证号passed" << endl;
}
break;
case 8:
if (checkCode == 4) {
cout << "身份证号Fail" << endl;
} else {
cout << "身份证号passed" << endl;
}
break;
case 9:
if (checkCode == 3) {
cout << "身份证号Fail" << endl;
} else {
cout << "身份证号passed" << endl;
}
break;
case 10:
if (checkCode == 2) {
cout << "身份证号Fail" << endl;
} else {
cout << "身份证号passed" << endl;
}
break;
}
```
阅读全文