标题:校验身份证的问题
只看楼主
twitty
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-11-6
结帖率:0
 问题点数:0 回复次数:3 
校验身份证的问题
身份证号码前17为分别按顺序乘如下数字(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)。把成绩结果求和,然后再除以11取余。根据余数从下面这些数中找到对应的数字(1,0,X,9,8,7,6,5,4,3,2)

我做到一半,想运行一下,结果运行不出,强制停止运作,是不是我做的太复杂了,电脑不接受;

#include<stdio.h>
int main()
{int n,i,y,a[17],j;
    scanf("%d",n);
    y=n%10;
    n/=10;
    for(i=16;i>=0;i--)
    {a[i]=n%10;
    n/=10;   
   
    }
j=(a[0]*7+a[1]*9+a[2]*10+a[3]*5+a[4]*8+a[5]*4+a[6]*2+a[7]*1+a[8]*6+a[9]*3+a[10]*7+a[11]*9+a[12]*10+a[13]*5+a[14]*8+a[15]*4+a[16]*2)%11;
printf("%d\n",j);
 return 0;
 }
搜索更多相关主题的帖子: 身份证号码 include 
2015-11-07 23:39
lzl123321
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:41
专家分:148
注 册:2015-10-15
得分:0 
回复问题很大,已修改

[此贴子已经被作者于2015-11-8 13:29编辑过]

2015-11-08 05:20
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
程序代码:
#include<stdio.h>

int main()
{
    char s[18]={'\0'};
    char t[]={'1','0','X','9','8','7','6','5','4','3','2'};
    int j;
    scanf("%s",s);
    j=(( s[0]-'0')*7+   (s[1]-'0')*9+ (s[2]-'0')*10+(s[3]-'0')*5+ (s[4]-'0')*8+ (s[5]-'0')*4+  \
       ( s[6]-'0')*2+   (s[7]-'0')*1+ (s[8]-'0')*6+ (s[9]-'0')*3+(s[10]-'0')*7+(s[11]-'0')*9+  \
       (s[12]-'0')*10+ (s[13]-'0')*5+(s[14]-'0')*8+(s[15]-'0')*4+(s[16]-'0')*2)%11;
    printf("%s的校验码是%c\n",s,t[j]);
    return 0;
}

DO IT YOURSELF !
2015-11-08 08:52
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:0 
刚下载了vs2010旗舰版,就拿这个试试。vs不像vc运行结束要敲任意键关闭控制台窗口,所以用了个stdlib库里的system("pause"),用自己的身份证验证还真是这样,代码及运行效果如下:

程序代码:
// jysfz.cpp: 主项目文件。

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
void main()
{
    char s[20],m[]={"79:584216379:5842"},w[]={"10X98765432"}; //asc码9后面的是冒号,所以用‘:’代替校验运算码10
    int i,j;
    scanf("%s",s);
    for(i=0,j=0;s[i+1];i++)j+=(s[i]-'0')*(m[i]-'0'); //通过判断s[i+1]的结束循环可保留最后一位不参与运算
    if(s[i]>'Z')s[i]-=32;  //小写字母转大写字母
    if(s[i]==w[j%11])printf("身份证%s合法\n",s);  //验证身份证末位,15位身份证无校验位
    else printf("身份证%s不合法\n",s);
    system("pause");
}

能编个毛线衣吗?
2015-11-08 12:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-459000-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.118999 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved