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语言编程作业,求解答
作业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!+3!+5!+……+N!的值,且N为奇数
2015-11-26 用C语言编程1+1\/3!+1\/5!+……+1\/(2n+1)!... 1 2011-07-28 编程计算1!+3!+5!+...+(2n-1)!的值,其中n... 1 2012-08-28 c++编程题:输出*组成的图形 行数n(3≤n≤23)且n为... 3 2014-06-28 写一个函数求1!+3!+5!+...+n!,n由键盘从主函数... 2010-10...

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语言的试题给我,最好能有答案的,非常感谢!
3、编写一个程序,从标准输入中读取一个字符串,将其中的大写字母转换为小写字母,并输出转换后的字符串。答案:include <stdio.h>#include <ctype.h> int main() {char c;while ((c = getchar()) != EOF) {putchar(tolower(c));}return 0;}4、编写一个程序,从标准输入中读取一个字符...

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

c语言编程题,请高手帮忙做一下,拜谢,急急急急……
1.include <stdio.h> double funcPi(int);int main(void){ int arg;printf("Input the argument: ");\/\/ \/\/ 无异常输入 \/\/ while (!scanf("%d", &arg)){ printf("Check your input and retry: ");while (getchar()!='\\n'){ continue;} } while (getchar()!='\\n'){ continue...

c语言编程:计算100!要求是精确值。 大家帮帮忙了!
main(){long i,j,x,num=0; for(i=1;i<=100;i++) {x=1; for(j=1;j<=i;j++)x*=j; num+=x; } printf("%ld",num);getch();}

急求用c语言编程写出这十题
1,include<stdio.h>void main(){ printf("我的名字是张三.\\n"); printf("我是一个男性。\\n"); printf("我今年24岁了。\\n"); printf("我在三年二班。\\n"); }2,include<stdio.h>void main(){ int m; m=923; printf("m=%d.\\n",m); }3,include<stdio.h>void main(){ ...

c语言编程题目,帮帮我
边距通过行号和列号来求。 比如m的行号列号 (5, 3),n的号(2, 2) 两个点的行和列的差就是两条边距 3, 1.结果就是 3 + 1 = 4; 编译器:gcc。 这代码应该不会有编译器不兼容的现象。*\/#include<stdio.h>int main() { int w, m, n; \/\/m的行号mh,...

C语言简单编程题目两道,求高手做一下。高分!!!
第1题 :include <stdio.h> include <stdlib.h> define MAX 200 int main(void){ int a[MAX], i = 0;srand(time(NULL)); \/\/ 时间种子, 保证真随机, 每次不会相同 while (i < MAX) { a[i] = rand() % 10000; \/\/ 随机获得10000以下数字, 0-9999 if (a[i] < 1000) { ...

相似回答