c语言编程题求帮忙!!

身份证的最后一位是根据前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

#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;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-12-18
#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;
}

第2个回答  2017-12-18
==是初学者吗
这样的问题最好说明哪一步不懂,自己练习还是最重要的
scanf一位一位的读入
乘除之后,switch case就ok了

C语言编程题,拜托大家
int i=1,cnt=0,n=MAXS,flag=0;\/\/flag:待保存标识;1:标识有数据待保存2:无数据待保存 char c=0;while(i<=n){ c=getch();if(c!=13 && c!=4 && c>='0' && c<='9')\/\/输入只接收并回显数字字符 { if(!flag)nums[cnt]=0,cnt++,flag=1;nums[cnt-1]=nums[cnt-1]*10...

C语言结构体编程题,求助大神啊
根据题意:一、教师信息定义为结构体,其成员年月也为结构体(可直接定义成两个成员变量,本题没有强制要求),婚姻状态采用共用体类型。二、输入信息直接写在main函数,实际软件开发应单独写输入函数,输入验证我只写了性别和婚姻状态的验证,其余成员的输入验证需要自己添加。(实际开发,验证也应单独写...

C语言编程作业,求解答
作业1:result(int)= c (char) * i (int) + f (float) \/ d (double) -(f + i);第一步:f+i, 一个float和int相加,按精度高的float进行计算,结果为float result = char * int + float\/double - float;第二步:char * int, 他们都是整数相加为int result =int + float\/double...

c语言编程求助,越多越好我可以加,一题也行,感谢大神!
1#include<stdio.h>int prime(int n){ int flag=1; if(n<=1) return 0; for(int i=2;i*i<=n;i++){ if(n%i==0){ flag=0; break; } } if(flag) return 1; else return 0;}int main(){ int t; scanf("%d",&t); if(prime(t...

C语言编程 求1!+3!+5!+……+N!的值,且N为奇数
}本程序已经在VC上运行通过,在N不是很大的情况下可以,太大了就属于大数问题了,要改 本回答由提问者推荐 举报| 答案纠错 | 评论(1) 9 0 无泪瓦擦 采纳率:45% 擅长: C\/C++ VC++ 数学 其他回答 #include<stdio.h>void main(){ int sum=0; int i,N,jc=1; printf("please input N:"); ...

谁能提供点C语言的试题给我,最好能有答案的,非常感谢!
以下是一些 C 语言的试题,每个试题都附带有答案。希望能够帮助到你。1、编写一个程序,从命令行参数中读取两个整数,计算它们的和并输出结果。答案:include <stdio.h> int main(int argc, char *argv[]) {if (argc != 3) {printf("Usage: %s <int1> <int2>\\n", argv[0]);return 1...

C语言编程题,急,请大家帮忙啊,不会的也试试啊,急
1.include"stdio.h"defineL100 defineU200 defineFACTOR5 voidmain(){inti;printf("%5d之间%5d不能被%5d蒸出的数如下:\\n",L,U,FACTOR);for(i=L;i<=U;i++)if(i%FACTOR)printf("%-4d",i);} 2.include"stdio.h"voidmain(){ intx[12]={2,45,67,12,3,9,76,45,23,42,6,5}...

C语言编程,求解
一、程序需要四个函数,分别是入口主函数、输入函数、输出函数、排序函数。二、题目要求按首字母排序,未限制大小写,因此不能直接用字母比大小,需根据大小写求字母差值,用差值比较。三、字符串排序交换,用函数strcpy。下面是代码:include<stdio.h> include<string.h> define MM 12\/\/月份个数 define...

c语言求大神帮忙解决编程问题
if (i%7==0) 能被7整除。用 n 计数,满5个则换行。include<stdio.h> int main(){ int i,n=0;for (i=100;i<=1000;i++){ if (i%7==0) {printf("%d ",i); n++;}; \/\/输出和计数 if (n==5){printf("\\n");n=0;}; \/\/换行控制 };return 0;} ...

求教c语言的编程题目?
1.手动录取学生信息对应我的函数iputCStus,连续输入一个班级的学生信息,构建一条链表,返回头节点,想创建多个班级,反复调用即可。2.统计平均分和最高最低分,对应我的函数showById。3.统计功能对应函数tjRN。另外,由于演示和测试需要一组学生信息,反复手动输入不合理,所以我又单独写了一个随机数...

相似回答