//目前已知的bug:选择功能界面不可输入除数字以外的字符。
//水平有限,还请谅解。
#include <iostream>
using namespace std; int main () { char b[18],a[17]; int i,t,p; char x; int sum; cout<<"请输入功能:\n"; cout<<"1.校验\t2.计算\n"; cin>>t; while(t!=1&&t!=2) { cout<<"输入有误,请重新输入!\n"; cin>>t; } if(t==1) { cout<<"请输入身份证号码:\n"; for(i=0;i<18;i++) cin>>b[i]; sum=(b[0]-48)*7+(b[1]-48)*9+(b[2]-48)*10+(b[3]-48)*5+(b[4]-48)*8+(b[5]-48)*4+(b[6]-48)*2+(b[7]-48)*1+(b[8]-48)*6+(b[9]-48)*3+(b[10]-48)*7+(b[11]-48)*9+(b[12]-48)*10+(b[13]-48)*5+(b[14]-48)*8+(b[15]-48)*4+(b[16]-48)*2; p=sum%11; switch (p) { case 0:x='1';break; case 1:x='0';break; case 2:x='X';break; case 3:x='9';break; case 4:x='8';break; case 5:x='7';break; case 6:x='6';break; case 7:x='5';break; case 8:x='4';break; case 9:x='3';break; case 10:x='2';break; } if(x==b[17]) cout<<"所输身份证号正确!\n"; else cout<<"所输身份证号不正确!\n"; } if(t==2) { cout<<"请输入身份证号前17位:\n"; for(i=0;i<17;i++) cin>>a[i]; sum=(a[0]-48)*7+(a[1]-48)*9+(a[2]-48)*10+(a[3]-48)*5+(a[4]-48)*8+(a[5]-48)*4+(a[6]-48)*2+(a[7]-48)*1+(a[8]-48)*6+(a[9]-48)*3+(a[10]-48)*7+(a[11]-48)*9+(a[12]-48)*10+(a[13]-48)*5+(a[14]-48)*8+(a[15]-48)*4+(a[16]-48)*2; p=sum%11; switch (p) { case 0:x='1';break; case 1:x='0';break; case 2:x='X';break; case 3:x='9';break; case 4:x='8';break; case 5:x='7';break; case 6:x='6';break; case 7:x='5';break; case 8:x='4';break; case 9:x='3';break; case 10:x='2';break; } cout<<"校验码是"<<x<<endl; cout<<"身份证号应为:\n"; for(i=0;i<17;i++) cout<<a[i]; cout<<x; } return 0; } |
|
来自: canghaiyisu2 > 《程序》