1. 用c語言,測身份證號是否合法
如果你想驗證身份證號是否符合要求就用正則表達式,如果想驗證身份證號是否真實光用語言肯定不行。至於用驗證碼驗證身份證號,從沒聽過。
2. C語言編程:設計一個程序,輸入身份證號碼,驗證身份證號的合法性
你只要對哪些是合法的分分類
就可以寫出來這個程序了,就比如判斷一個數是不是素數等類似。
首先對這個數什麼特徵細區分出來
3. 在C語言中如何用代碼保存身份證號碼,並能校驗正確性
校驗正確性是指是否符合身份證號的格式嗎?一般都是用正則表達式來做的
4. c++對輸入的身份證進行合法性驗證
最簡單的事用正則表達式建議樓主學學正則表達式
5. C語言.設計身份證號合法性驗證程序
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
char st[18];
int num[18],w[18],s=0;
int i ;
scanf("%18s",st);
for(i=0; i<18; i++)
num[i]=st[i]-'0';
for( i=0; i<18; i++)
printf("%2d ",num[i]);
printf("\n");
if(num[16]%2==0)
printf("女的\n");
else printf("男的\n");
for( i=0; i<17; i++)
{
w[i]=(int)pow(2,18-i-1)%11;
printf("%2d ",w[i]);
s+=num[i]*w[i];
}
printf("\ns=%d\n",s);
for( i=0; i<17; i++)
{
printf("%2d ",num[i]*w[i]);
}
s%=11;
printf(" = %d\n",s);
if(s==0 && num[17]==1)
{
printf("\nok\n");
return 0;
}
if(s==1 && num[17]==0)
{
printf("\nok\n");
return 0;
}
if(s==2 && (st[17]=='X' || st[17]=='x'))
{
printf("\nok\n");
return 0;
}
if((s>=3 && s<=10) && (s+num[17]==12))
{
printf("\nok\n");
return 0;
}
printf("\nerrer\n");
return 0;
}
6. C語言設計程序判斷身份證號的合法性,並輸出到指定日期的天數
天數包括2019.4.2這天嗎?
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#defineTHISYEAR2019
#defineTHISMONTH4
#defineTODAY2
#defineDATA20190402
#defineMOD11
constintdays[2][12]={
{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}
};
constintWF[17]={
7,9,10,5,8,4,2,1,6,
3,7,9,10,5,8,4,2
};
constcharPIN[11]={
'1','0','X','9','8','7',
'6','5','4','3','2'
};
intleapyear(int);//判斷閏年
ints2d(char*,int,int);
intcountdays(int,int,int);
intmain(void){
intis_valid=1;//ID是否合格的標志
inty,m,d;
charID[19];
scanf("%s",ID);
if(strlen(ID)!=18){
is_valid=0;
}
else{
for(inti=0;i<17;i++){
if(!isdigit(ID[i])){
is_valid=0;
break;
}
}
y=s2d(ID,6,9);
m=s2d(ID,10,11);
d=s2d(ID,12,13);
if(m<1||m>12||d>31||d<1||
(leapyear(y)&&m==2&&d>29)||
10000*y+100*m+d>=DATA)
is_valid=0;
intsum=0;
for(inti=0;i<17;i++){
sum+=(ID[i]-'0')*WF[i];
}
if(toupper(PIN[sum%MOD])!=toupper(ID[17]))
is_valid=0;
}
if(is_valid){
inttotaldays=countdays(y,m,d);
printf("%d ",totaldays);
}
else
puts("No");
return0;
}
intleapyear(inty){
return(y%4==0&&y%100!=0)||(y%400==0);
}
ints2d(char*id,ints,inte){
intresult=0;
for(inti=s;i<=e;i++)
result=10*result+(id[i]-'0');
returnresult;
}
intcountdays(inty,intm,intd){
inttotal=0;
if(y<THISYEAR){
for(inti=11;i>=m;i--){
total+=days[leapyear(y)][i];
}
total+=days[leapyear(y)][m-1]-d+1;
for(inti=y+1;i<THISYEAR;i++)
total+=leapyear(i)?366:365;
for(inti=0;i<THISMONTH-1;i++)
total+=days[leapyear(THISYEAR)][i];
total+=TODAY;
}
else{
for(inti=y-1;i<THISMONTH-1;i++)
total+=days[leapyear(THISYEAR)][i];
total+=TODAY;
}
returntotal;
}
7. 用C語言編寫一個程序,驗證輸入的身份證是否合法
源程序如下:
#include "stdio.h"
void main()
{
int i; /*身份證的第i位*/
int s[17]; /*定義一個數組用來存放身份證的前17位*/
int t[17]; /*各位相乘後的數組*/
int m; /*余數*/
int t18; /*身份證的第18位0--9*/
char t18c; /*身份證的第18位X*/
long int sum=0;
for(i=0;i<17;i++)
{
printf("請輸入身份證的第%d位:",i+1);
scanf("%d",&s[i]);
switch(i+1)
{
/*身份證的1到17位要乘的數一次是7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 */
case 1:t[i]=s[i]*7;break;
case 2:t[i]=s[i]*9;break;
case 3:t[i]=s[i]*10;break;
case 4:t[i]=s[i]*5;break;
case 5:t[i]=s[i]*8;break;
case 6:t[i]=s[i]*4;break;
case 7:t[i]=s[i]*2;break;
case 8:t[i]=s[i]*1;break;
case 9:t[i]=s[i]*6;break;
case 10:t[i]=s[i]*3;break;
case 11:t[i]=s[i]*7;break;
case 12:t[i]=s[i]*9;break;
case 13:t[i]=s[i]*10;break;
case 14:t[i]=s[i]*5;break;
case 15:t[i]=s[i]*8;break;
case 16:t[i]=s[i]*4;break;
case 17:t[i]=s[i]*2;break;
}
sum=sum+t[i];
}
printf("前17位相乘後的和為%ld
",sum);
m=sum%17;
printf("對17取余後的值位:",m);
switch(m)
}
/*各個余數所對應第18位身份證號1 0 X 9 8 7 6 5 4 3 2*/
case 0:t18=1 ;printf("這是一個合法的身份證號碼,第18位是%d",t18);break;
case 1:t18=0 ;printf("這是一個合法的身份證號碼,第18位是%d",t18);break;
case 2:t18c='X';printf("這是一個合法的身份證號碼,第18位是%c",t18c);break;
case 3:t18=9 ;printf("這是一個合法的身份證號碼,第18位是%d",t18);break;
case 4:t18=8 ;printf("這是一個合法的身份證號碼,第18位是%d",t18);break;
case 5:t18=7 ;printf("這是一個合法的身份證號碼,第18位是%d",t18);break;
case 6:t18=6 ;printf("這是一個合法的身份證號碼,第18位是%d",t18);break;
case 7:t18=5 ;printf("這是一個合法的身份證號碼,第18位是%d",t18);break;
case 8:t18=4 ;printf("這是一個合法的身份證號碼,第18位是%d",t18);break;
case 9:t18=3 ;printf("這是一個合法的身份證號碼,第18位是%d",t18);break;
case 10:t18=2 ;printf("這是一個合法的身份證號碼,第18位是%d",t18);break;
default:printf("這不是一個合法的身份證號碼");
}
printf("
");
}
VC++6.0測試如下(輸入一位後按回車輸入第二位數)。
8. 判斷身份證是否合法,C#程序實現
C#判斷身份證是否合法,若輸入的字元串位數或格式不正確,或者身份證號所規定的性別錯誤,則會給出提示告訴你身份證號是否合法,程序運行效果如上圖所示。 2. 我們提供的源代碼意在用於學習和研究,未經作者或本站許可請勿用於商業用途,由此造成的不良後果本站不承擔任何法律責任。
9. c語言輸入身份證輸出生日,性別,並判斷身份證是否合法
voidmain()
{
inta[18]
for(inti=0;i<18;i++)
{
inttemp;
scanf("%d",&temp);
a[i]=temp;
}
printf("生日: ");
for(intj=0;j<8;j++)
{printf("%d ",a[6+i]);}
charsex[2]={』女『,』男『};
printf("性別:%c ",sex[a[16]%2]);//
printf("位數:%d ",18);
}
10. C語言中,如何生成身份證年份的隨機數(用rank()函數),並校驗身份證是否合法
最後4位數字中的前兩位表示當地派出所的編碼;
倒數第二位表示公民是男性還是女性(男性用單數,女性用雙數);
最後一位數字是一個隨機數,又稱為校驗碼。 用來檢驗身份證的正確性。校檢碼可以是0~9的數字,有時也用x表示。