有没有大神会编一个C语言程序,输入身份证号码,输出出生年月日期,性别,年龄,要求用三个函数,求指教
好久没有用过c了,吃屎一样的难受。以上代码亲测可用。
也是太久没用C了,测试没问题,楼主看看吧
#include <stdio.h>
#include <string.h>
#include <time.h>
void getBirthDay(char id[],int len){
printf("出生日期: ");
if(len<=15){
printf("19%c%c . %c%c . %c%c\n",id[6],id[7],id[8],id[9],id[10],id[11]);
}else{
printf("%c%c%c%c . %c%c . %c%c\n",id[6],id[7],id[8],id[9],id[10],id[11],id[12],id[13]);
}
}
void getAge(char id[],int len){
time_t t;
struct tm * lt;
time (&t);//获取Unix时间戳。
lt = localtime (&t);//转为时间结构。
int now=lt->tm_year;//当前年份
int birth;
if(len==15){
birth=(id[6]-'0')*10+(id[7]-'0');
}else{
birth=(id[6]-'0')*1000+(id[7]-'0')*100+(id[8]-'0')*10+(id[9]-'0')-1900;
}
printf("年龄: %d\n",now-birth);
}
void getSex(char id[],int len){
printf("性别: ");
if(len<=15){
int i=id[14]-'0';
if(i%2==0){
printf("女\n ");
}else{
printf("男\n ");
}
}else{
int i=id[17]-'0';
if(i%2==0){
printf("女\n ");
}else{
printf("男\n ");
}
}
}
int main(void) {
char id[20];
printf("input the credit id:\n");
scanf("%s", id);
//printf("%s\n",id);
int len=strlen(id);
if(len==15||len==18){
getBirthDay(id,len);
getAge(id,len);
getSex(id,len);
}else{
printf("illeage input");
}
return 0;
}
没有做输入格式的验证和循环输入
身份证号码可能获取性别吗?
#include "stdafx.h"
#include"stdio.h"
#include
void Id_chex();
struct info
{
char ID[21];
char name[9];
char birthday[9];
char sex[7];
};
int main()
{
printf("please Enter the number ");
Id_chex();
return 0;
}
void Id_chex()
{
struct info info1 =
{
"600000000000000004",
"zhangsan",
"19910328",
"female"
};
char number[21] = {};
gets_s(number, 21);
char idtemp[21] = {};
for (int i = 0; i < 21; i++)
{
idtemp[i] = info1.ID[i];
}
if (strcmp(number, idtemp) == 0)
{
printf("查询到身份证信息");
printf("\n");
for (int i = 0; i < 21; i++)
{
printf("%c", info1.ID[i]);
}
printf("\n");
for (int i = 0; i < 9; i++)
{
printf("%c", info1.name[i]);
}
printf("\n");
for (int i = 0; i < 9; i++)
{
printf("%c", info1.birthday[i]);
}
printf("\n");
for (int i = 0; i < 7; i++)
{
printf("%c", info1.sex[i]);
}
printf("\n");
}
else
printf("没有查询到身份证信息");
}