C语言实例之身份证号获取生日性别

C/C++
293
0
0
2022-11-14

身份证号的第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日 性别:男