仅用int,scanf和printf输入身份证号输出出生日期
时间: 2024-10-13 16:04:35 浏览: 28
2014华为机试和面试资料整理
中国的身份证号码是由18位数字组成,前6位代表地区,接下来8位代表出生日期(月份+日期),最后4位是校验码。如果你想要通过输入身份证号并仅使用`int`、`scanf`和`printf`提取出生日期,可以这样做:
```c
#include <stdio.h>
#include <string.h> // 引入字符串处理库,用于长度判断
// 函数用于检查身份证号的格式是否正确,这里简单地判断位数
int check_id_number(char id[]) {
if (strlen(id) != 18)
return 0; // 身份证号不是18位
return 1;
}
// 提取出生日期
void get_birth_date(char id[], char date[10]) {
int i = 7; // 开始从第8位开始提取
for (i = 7; i < 11; i++) { // 取前两位月,后两位日
date[i - 7] = id[i]; // 把每一位数字赋值给输出数组
}
date[9] = '/'; // 添加分隔符
date[10] = '\0'; // 结束字符串
}
int main() {
char id[18];
char birth_date[11] = {"1900/01"};
// 输入身份证号
printf("请输入您的身份证号码: ");
scanf("%s", id);
if (!check_id_number(id)) {
printf("错误的身份证号码格式!\n");
} else {
get_birth_date(id, birth_date);
printf("您的出生日期是:%s\n", birth_date);
}
return 0;
}
```
请注意,这个示例假定输入的身份证号格式总是正确的,并且没有处理校验码。在实际应用中,需要更全面的身份验证。
阅读全文