C语言作业:4. 设计身份证号合法性验证程序
发布网友
发布时间:2022-04-19 22:32
我来回答
共1个回答
热心网友
时间:2023-07-11 09:11
#include
"stdio.h"
void
main()
{
int
i;
/*身份证的第i位*/
int
s[17];
/*定义一个数组用来存放身份证的前17位*/
int
t[17];
/*各位相乘后的数组*/
int
m;
/*余数*/
int
t18;
/*身份证的第18位0--9*/
char
t18c;
/*身份证的第18位X*/
long
int
sum=0;
for(i=0;i<17;i++)
{
printf("请输入身份证的第%d位:",i+1);
scanf("%d",&s[i]);
switch(i+1)
{
/*身份证的1到17位要乘的数一次是7
9
10
5
8
4
2
1
6
3
7
9
10
5
8
4
2
*/
case
1:t[i]=s[i]*7;break;
case
2:t[i]=s[i]*9;break;
case
3:t[i]=s[i]*10;break;
case
4:t[i]=s[i]*5;break;
case
5:t[i]=s[i]*8;break;
case
6:t[i]=s[i]*4;break;
case
7:t[i]=s[i]*2;break;
case
8:t[i]=s[i]*1;break;
case
9:t[i]=s[i]*6;break;
case
10:t[i]=s[i]*3;break;
case
11:t[i]=s[i]*7;break;
case
12:t[i]=s[i]*9;break;
case
13:t[i]=s[i]*10;break;
case
14:t[i]=s[i]*5;break;
case
15:t[i]=s[i]*8;break;
case
16:t[i]=s[i]*4;break;
case
17:t[i]=s[i]*2;break;
}
sum=sum+t[i];
}
printf("前17位相乘后的和为%ld\n",sum);
m=sum%17;
printf("对17取余后的值位:",m);
switch(m)
{
/*各个余数所对应第18位身份证号1
0
X
9
8
7
6
5
4
3
2*/
case
0:t18=1
;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case
1:t18=0
;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case
2:t18c='X';printf("这是一个合法的身份证号码,第18位是%c",t18c);break;
case
3:t18=9
;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case
4:t18=8
;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case
5:t18=7
;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case
6:t18=6
;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case
7:t18=5
;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case
8:t18=4
;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case
9:t18=3
;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
case
10:t18=2
;printf("这是一个合法的身份证号码,第18位是%d",t18);break;
default:printf("这不是一个合法的身份证号码");
}
printf("\n");
}
C语言作业:4. 设计身份证号合法性验证程序
case 1:t18=0 ;printf("这是一个合法的身份证号码,第18位是%d",t18);break;case 2:t18c='X';printf("这是一个合法的身份证号码,第18位是%c",t18c);break;case 3:t18=9 ;printf("这是一个合法的身份证号码,第18位是%d",t18);break;case 4:t18=8 ;printf("这是一个合法的身...
C语言.设计身份证号合法性验证程序
include <stdio.h> include <stdlib.h> include <math.h> int main(){ char st[18];int num[18],w[18],s=0;int i ;scanf("%18s",st);for(i=0; i<18; i++)num[i]=st[i]-'0';for( i=0; i<18; i++)printf("%2d ",num[i]);printf("\n");if(num[16]%2==0)...
C语言设计程序判断身份证号的合法性,并输出到指定日期的天数?_百度...
30,31,30,31}};const int WF[17] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};const char PIN[11] = { '1', '0', 'X', '9'
c语言 关于身份证是否合法问题 求大神看看我写这个哪里错了0.0_百度...
1,基本语法错误,if () 应该是测试等"==",不应该用赋值 "="2.仔细看下你的 if(valid)的 "}"的位置是不是放错了,放到 if(valid=1) printf("合法身份证号");下面了,应该在if(valid=0) printf("非法身份证号");的上面吧!3.取数组的第一个值应该是 [0], 而不是 [1]
C语言题目:身份证号码与性别?
<string.h> int main(int argc,char *argv[]){ char s[19];printf("Please enter your ID number...\nID=");if(scanf("%18s",s)!=1 || strlen(s)!=18){ printf("Input error, exit...\n");return 0;} printf("%c\n",(s[16]&1 ? 'M' : 'F'));return 0;} ...
c语言程序设计写个函数判断身份证男女
(不包括各位是字母的)include<stdio.h> main(){ int a[18];printf("Please input a:");for(i=0;i<18;i++)scanf("%d",&a[i])if(a[17]%2==0)printf("女");else if(a[17]%2==1)printf("女");else printf("无法识别");} ...
C语言设计身份证号信息提取器:输入一身份证号后输出此人的出生年、月...
include<string.h> int main(){ char id[]="410246198704030811";printf("请输入您的身份证号(18位数字):\n");scanf("%s",id);printf("您出生在%c%c%c%c年%c%c月%c%c日\n",id[6],id[7],id[8],id[9],id[10],id[11],id[12],id[13]);system("pause");return 0;} ...
C语言程序设计:写一个函数,从给定的身份证号中提取出生年月日_百度知...
这个简单,用以字符串str[20]={身份证号码};出生月日就是倒数第7个元素到第14个元素结束;用一个for循环,如str[20]="45032519901016127X";for(i=6;i<=13;i++) putchar(str[i]);就可以了 结果是19901016,有木有?
身份证号码最后一位验算 C语言
main(void){ int id[18];//这里初始化时不应为空,要么char id[18]={0};或者直接char id[18];//还有,身份证号码是数字,所以应该是int不是char int i,sum=0;printf("Please input indentity card number\n");for (i=0;i<=16;i++)//for (i=0;i<16;i++)后面有 id[16]*=2...
利用C语言编写一段程序,能够实现身份证的查询 用链表的形式查询,如查询...
功 能: 身份证号查询 随机生成身份证号 typedef struct enum srand rand 使用演示 函数指针使用演示 Linux系统源代码中的公共列表LIST使用演示 文件名: codeid2.cpp 相关文件: 全国各地区的代码信息文件code.bin 作 者: 李永 日 期: 2010.9.4 / include <stdio.h> include ...