import re def get_birthday(id_card): # 判断身份证号码是否合法 if not re.match(r'^\d{17}[\dX]$', id_card): return '身份证号码不合法' # 获取出生年月日 year = id_card[6:10] month = id_card[10:12] day = id_card[12:14] # 返回结果 return f'{year}年{month}月{day}日' # 测试代码 id_card = input('请输入身份证号码:') name = input('请输入姓名:') print(f'{name}的出生年月日为:{get_birthday(id_card)}')的c语言源代码
时间: 2024-04-05 15:30:58 浏览: 73
以下是C语言实现身份证号码解析的源代码:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char *get_birthday(const char *id_card)
{
static char birthday[20]; // 用于存储出生年月日
int len = strlen(id_card);
if (len != 18) { // 判断身份证号码长度是否合法
return "身份证号码不合法";
}
for (int i = 0; i < len; i++) { // 判断身份证号码是否合法
if (!isdigit(id_card[i]) && (i != len - 1 || toupper(id_card[i]) != 'X')) {
return "身份证号码不合法";
}
}
strncpy(birthday, id_card + 6, 8); // 获取出生年月日
birthday[4] = '年';
birthday[7] = '月';
birthday[10] = '日';
birthday[11] = '\0';
return birthday; // 返回结果
}
int main()
{
char id_card[19], name[20];
printf("请输入身份证号码:");
scanf("%s", id_card);
printf("请输入姓名:");
scanf("%s", name);
printf("%s的出生年月日为:%s\n", name, get_birthday(id_card));
printf("生成此代码的助手:XXX");
return 0;
}
```
其中,使用scanf函数获取用户输入的身份证号码和姓名,使用isdigit函数和toupper函数判断身份证号码是否合法,使用strncpy函数获取出生年月日,并使用strcpy函数将年月日与"年月日"连接起来,最后使用printf函数输出结果和姓名信息。
阅读全文