身份证号的第7-14位为出生年月日,比如19670401代表1967年4月1日;其中第17位(倒数第二位)男为奇数,女为偶数;18位为校验码,0-9和X,作为尾号的校验码。
核心思路
C语言头文件 <stdio.h> 中的 scanf(); 输入身份证号,利用 %nd(n为整数,在这里表述读入几位数)将身份证分段读入,若第17位数为奇数,则性别为男;若第17位数为偶数,则性别为女,最后用C语言头文件 <stdio.h> 中的 printf(); 输出生日和性别。
源代码如下:
#include <stdio.h>
int main() {
int i, yy, mm, dd, j, k;
char m;
printf("请输入18位身份证号:\n");
scanf("%6d%4d%2d%2d%2d%1d%1c", &i, &yy, &mm, &dd, &j, &k, &m);
printf("生日:%4d年%.2d月%.2d日 ", yy, mm, dd);
if (k % 2 == 0) {
printf("性别:女");
} else {
printf("性别:男");
}
return 0;
}
运行编译上面的代码,将会输入以下结果:
请输入18位身份证号: 421102200202023233 生日:2002年02月02日 性别:男