c语言实现18位身份证号码第7~10位为出生年份(四位数),第11~12位为出生月份,第13~14位代表出生日期,第17位代表性别,奇数为男,偶数为女。 用户输入一个合法的身份证号,请输出用户的出生年月日和性别。
时间: 2023-01-28 16:15:04 浏览: 237
如果要在 C 语言中实现身份证号码的解析,你可以使用以下代码:
```
#include <stdio.h>
#include <string.h>
int main() {
char id_number[19]; // 存储身份证号码
printf("请输入身份证号码:");
scanf("%s", id_number);
// 解析出生年月日
char year[5], month[3], day[3]; // 年、月、日
strncpy(year, id_number + 6, 4); // 从第7位开始截取4位字符串
year[4] = '\0'; // 添加字符串结尾
strncpy(month, id_number + 10, 2); // 从第11位开始截取2位字符串
month[2] = '\0'; // 添加字符串结尾
strncpy(day, id_number + 12, 2); // 从第13位开始截取2位字符串
day[2] = '\0'; // 添加字符串结尾
printf("出生年月日:%s年%s月%s日\n", year, month, day);
// 解析性别
char gender = id_number[16]; // 第17位为性别
if (gender % 2 == 1) {
printf("性别:男\n");
} else {
printf("性别:女\n");
}
return 0;
}
```
在上面的代码中,我们使用了 `strncpy` 函数来截取字符串,并使用 `%s` 格式符输出字符串。我们还使用了身份证号码的第17位来判断性别,如果是奇数,则输出“男”,否则输出“女”。
阅读全文