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
展开
 我来答
该问答中所提及的号码未经验证,请注意甄别。
447587096
2017-12-18 · TA获得超过5047个赞
知道大有可为答主
回答量:2504
采纳率:70%
帮助的人:1177万
展开全部
#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;
}
听不清啊
高粉答主

2017-12-18 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
#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了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式