#include <stdio.h> #include <stdlib.h> #include <string.h> void get_info(char* id_num) { char year[5]; strncpy(year, id_num + 6, 4); year[4] = '\0'; // 加上字符串结尾符 char month[3]; strncpy(month, id_num + 10, 2); month[2] = '\0'; char day[3]; strncpy(day, id_num + 12, 2); day[2] = '\0'; char sex = (id_num[16] % 2 == 0) ? 'F' : 'M'; printf("birth: %s.%s.%s\n sex:%c", year, month, day, sex); } int main() { char id_num[19]; scanf("%s", id_num); get_info(id_num); return 0; }
时间: 2024-04-04 22:34:22 浏览: 84
#include <stdio.h>
4星 · 用户满意度95%
这是一段用 C 语言写的程序,实现了身份证号码解析的功能。用户输入一个身份证号码,程序会分离出其中的出生年月日和性别信息,然后输出这些信息。
具体实现过程如下:
1. 定义一个叫做 `get_info` 的函数,接收一个字符串参数 `id_num`,表示身份证号码。
2. 在函数内部,定义三个字符数组 `year`、`month`、`day`,分别用来存储出生年、月、日。
3. 调用 `strncpy` 函数,从 `id_num` 字符串中提取出生年、月、日的信息,分别存储到 `year`、`month`、`day` 数组中。比如,`strncpy(year, id_num + 6, 4)` 表示从 `id_num` 的第 7 个字符开始,拷贝 4 个字符到 `year` 数组中。
4. 由于 `strncpy` 函数不会自动在字符串末尾添加结尾符 `\0`,因此需要手动在 `year`、`month`、`day` 数组的末尾添加结尾符。
5. 根据身份证号码的规则,第 17 位表示性别,奇数为男性,偶数为女性。因此,判断 `id_num[16]` 是否为偶数,来确定性别信息。如果是偶数,则性别为女性,用字符 `'F'` 表示;否则,性别为男性,用字符 `'M'` 表示。
6. 最后,调用 `printf` 函数,输出出生年月日和性别信息。
7. 在 `main` 函数中,首先定义一个长度为 19 的字符数组 `id_num`,用来存储用户输入的身份证号码。然后,调用 `scanf` 函数,从标准输入中读取一个字符串,存储到 `id_num` 数组中。
8. 最后,调用 `get_info` 函数,解析身份证号码,并输出相关信息。
阅读全文