C语言程序设计:写一个函数,从给定的身份证号中提取出生年月日

如题所述

这个简单,用以字符串str[20]={身份证号码};出生月日就是倒数第7个元素到第14个元素结束;
用一个for循环,如str[20]="45032519901016127X";for(i=6;i<=13;i++) putchar(str[i]);就可以了
结果是19901016,有木有?追问

如果用调用函数的方法做,能行吗?

追答

可以呀,你得先输入身份证号!用gets(str)就可以啦!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-28
#include<stdio.h>

int year=0,month=0,day=0;

void getDate(char *num)
{
year=(num[6]-'0')*1000+(num[7]-'0')*100+(num[8]-'0')*10+(num[9]-'0');
month=(num[10]-'0')*10+(num[11]-'0');
day=(num[12]-'0')*10+(num[13]-'0');
}

void main()
{
char num[20]={NULL};

printf("请输入身份证号: \n");
scanf("%s",num);

getDate(num);

printf("year=%d,month=%d,day=%d",year,month,day);
}本回答被提问者采纳
第2个回答  2011-11-28
#include <stdio.h>
#include <string.h>
void GetDate(char* str, int& year, int& month, int& day)
{
char strYear[5];
char strMonth[3];
char strDay[3];
memcpy(strYear, str + 6, 4);
memcpy(strMonth, str + 10, 2);
memcpy(strDay, str + 12, 2);
year = atoi(strYear);
month = atoi(strMonth);
day = atoi(strDay);
}
void main()
{
char str[19];
int year, month, day;
printf("身份证号:");
scanf("%s", str);
GetDate(str, year, month, day);
printf("出生年月日:%d %d %d\n", year, month, day);
}
第3个回答  2019-09-29
#include
#include
void
main()
{
int
len,year,month,day;
char
str[30],str1[10];
printf("\n请输入身份证号:\n");
gets(str);
len=strlen(str);
if(len==18)
{
sscanf(str,
"%6c%4d%2d%2d",
str1,&year,&month,&day);
printf("出生日期:%d年%d月%d日\n",year,month,day);
}
else
printf("输入错误!\n");
}
第4个回答  2011-11-28
#include <stdio.h>
void main()
{
int a[18];
printf("输入身份证号码:");
for(int i=0;i<18;i++)
scanf("%1d",&a[i]);
for(i=6;i<10;i++)
printf("%d",a[i]);
printf("年");
for(i=10;i<12;i++)
printf("%d",a[i]);
printf("月");
for(i=12;i<14;i++)
printf("%d",a[i]);
printf("日\n");

}
相似回答