📄 main.c
字号:
#include <stdio.h>
#include <string.h>
#define age (107-((arrNewID[8]-'0')*10 + (arrNewID[9]-'0')))
#define month ((arrNewID[10]-'0')*10 + (arrNewID[11]-'0'))
#define day ((arrNewID[12]-'0')*10 + (arrNewID[13]-'0'))
#define year ((arrNewID[6]-'0')*1000 + (arrNewID[7]-'0')*100 +(arrNewID[8]-'0')*10+(arrNewID[9]-'0'))
int IdConvert(char oldID[] , char newID[18])
{
char verify[11] = "10X98765432";
char numSave[15];
int Q[17] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
int i,j,sum=0;
if(strlen(oldID) == 15)
{
for(i=0; i<15; i++)
{
if(oldID[i]>='0' && oldID[i]<='9') //如果输入的15位数是合法的
numSave[i] = oldID[i];
else
return -1; //如果输入的数不合法,重新输入
}
}
else
{
return -2; //如果输入的位数不是15位,重新输入
}
newID[6] = '1';
newID[7] = '9';
for(i=0; i<6; i++)
{
newID[i] = numSave[i];
}
for(i=8,j=6; i<17,j<15; i++,j++)
{
newID[i] = numSave[j];
}
for(i=0; i<17; i++)
{
sum += (newID[i]-'0') * Q[i];
}
newID[17] = verify[sum % 11];
return 1;
}
int main()
{
char arrOldID[15];
char arrNewID[18];
int funResult,i;
printf("请您输入您的旧身份证号码:\n");
while(1)
{
scanf( "%s", arrOldID );
funResult = IdConvert(arrOldID ,arrNewID);
switch(funResult)
{
case -1:
printf("输入了非数字数据,为无效身份证号码!\n");
continue;
case -2:
printf("您输入的位数是%d,不等于15,请重新输入\n",strlen(arrOldID));
continue;
case 1:
printf("新的身份证号码是:");
for(i =0; i<18; i++)
{
printf("%c",arrNewID[i]);
}
printf("\n你出生于:%d年%d月%d日\n",year,month,day);
printf("年龄:%d\n",age);
if(arrNewID[16]%2 ==0 )
printf("性别:女\n");
else
printf("性别:男\n");
printf("转化成功!\n");
break;
}
return 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -