c语言身份证校验函数 c语言验证身份证是否正确的程序

用C语言编写一个程序,验证输入的身份证是否合法?源程序如下:
#include"stdio.h"
voidmain()
{
inti;/*身份证的第i位*/
ints[17]; /*定义一个数组用来存放身份证的前17位*/
intt[17]; /*各位相乘后的数组*/
intm;/*余数*/
intt18;/*身份证的第18位0--9*/
chart18c; /*身份证的第18位X*/
longintsum=0;
for(i=0;i17;i++)
{
printf("请输入身份证的第%d位:",i+1);
scanf("%d",s[i]);
【c语言身份证校验函数 c语言验证身份证是否正确的程序】switch(i+1)
{
/*身份证的1到17位要乘的数一次是7910584216379105842*/
case1:t[i]=s[i]*7;break;
case2:t[i]=s[i]*9;break;
case3:t[i]=s[i]*10;break;
case4:t[i]=s[i]*5;break;
case5:t[i]=s[i]*8;break;
case6:t[i]=s[i]*4;break;
case7:t[i]=s[i]*2;break;
case8:t[i]=s[i]*1;break;
case9:t[i]=s[i]*6;break;
case10:t[i]=s[i]*3;break;
case11:t[i]=s[i]*7;break;
case12:t[i]=s[i]*9;break;
case13:t[i]=s[i]*10;break;
case14:t[i]=s[i]*5;break;
case15:t[i]=s[i]*8;break;
case16:t[i]=s[i]*4;break;
case17:t[i]=s[i]*2;break;
}
sum=sum+t[i];
}
printf("前17位相乘后的和为%ld\n",sum);
m=sum%17;
printf("对17取余后的值位:",m);
switch(m)
}
/*各个余数所对应第18位身份证号10X98765432*/
case0:t18=1;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case1:t18=0;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case2:t18c='X';printf("这是一个合法的身份证号码,第18位是%c",t18c);break;
case3:t18=9;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case4:t18=8;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case5:t18=7;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case6:t18=6;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case7:t18=5;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case8:t18=4;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case9:t18=3;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case10:t18=2;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
default:printf("这不是一个合法的身份证号码");
}
printf("\n");
}
VC++6.0测试如下(输入一位后按回车输入第二位数) 。
C语言中,如何生成身份证年份的随机数(用rank()函数),并校验身份证是否合法最后4位数字中c语言身份证校验函数的前两位表示当地派出所的编码;
倒数第二位表示公民是男性还是女性(男性用单数c语言身份证校验函数,女性用双数);
最后一位数字是一个随机数,又称为校验码 。用来检验身份证的正确性 。校检码可以是0~9的数字,有时也用x表示 。
C++编写一个计算身份证校验位的函数 , 函数原型为char check(char s[17])// 开始没注意c语言身份证校验函数,既然命题要求函数原型必须是char check( char s[17] )
#includeiostream
using namespace std;
char check( char s[17] )
{
int m,y;
char p='2'; // --p要改成char型 , 并且要返回的,这是根据c语言身份证校验函数你写的后续代码来判断的
// 下面的输入代码放到main函数中,交把用户输入结果以参数形式传入check()
// cout"输入身份证号前17位:"endl;
// cinsendl;
m=s[0]*7+s[1]*9+s[2]*10+s[3]*5+s[4]*8+s[5]*4+s[6]*2+s[7]*1+s[8]*6+s[9]*3+s[10]*7+s[11]*9+s[12]*10+s[13]*5+s[14]*5+s[15]*4+s[16]*2; // --这里s[14]4]*5是输错了吧,改为s[14]*5
switch(y=m%11)
{

推荐阅读