c语言编程题求帮忙!!
身份证的最后一位是根据前17位数字计算出来的检验码。计算方法是:将身份证号码前17位数分别乘以不同的系数。从第1位到第17位的系数分别为:7910584216379105...
身份证的最后一位是根据前17位数字计算出来的检验码。计算方法是:将身份证号码前17位数分别乘以不同的系数。从第1位到第17位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2;将乘积之和除以11,余数可能为0 1 2 3 4 5 6 7 8 9 10。则根据余数,分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2。编写程序,输入身份证号码前17位,输出对应的检验码。
例如输入34052419800101001,输出X 展开
例如输入34052419800101001,输出X 展开
提示该问答中所提及的号码未经验证,请注意甄别。
3个回答
展开全部
#include<stdio.h>
int main(void)
{
int xishu[17] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
char s[20]="10X98765432";
char id[20];
int sum = 0,i,yushu;
printf("请输入身份证号:");
gets(id);
for (i = 0; i<17; i++)
{
sum = sum + (xishu[i] * (id[i] - '0'));
}
yushu = sum % 11;
printf("%c\n", s[yushu]);
return 0;
}
展开全部
#include<stdio.h>
int main()
{int i,s=0,a[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char id[19];
scanf("%s",id);
for(i=0;i<17;i++)
s+=a[i]*(id[i]-'0');
printf("%c\n",s%11<10?'0'+s%11:'X');
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2017-12-18
展开全部
==是初学者吗
这样的问题最好说明哪一步不懂,自己练习还是最重要的
scanf一位一位的读入
乘除之后,switch case就ok了
这样的问题最好说明哪一步不懂,自己练习还是最重要的
scanf一位一位的读入
乘除之后,switch case就ok了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询