问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言:输入一个人的出生年,月,日,再输入当前年,月,日,计算此人的实际年龄。求解各位C语大神。

发布网友 发布时间:2022-09-16 23:45

我来回答

3个回答

热心网友 时间:2023-10-14 09:37

  要利用时间函数,代码如下:

#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int year,month,day;
    printf("input birthday:\n");
    scanf("%d %d %d",&year,&month,&day);
    time_t cur = time(NULL);
    struct tm *today = localtime(&cur);//获得当前的日期
    int days0 = year*10000+(month-1)*100+day-1;
    int days1 = today->tm_year*10000+(today->tm_mon-1)*100+today->tm_mday-1;
    int age = days1-days0;//当日期或者月份不足的时候,会自动从上一级借位,因此计算出的年纪是可靠的,但是月份需要分析:需要减去99加12
    int mon = (age-(age/10000)*10000)/100;
    printf("age is %dyear %dmonth\n",age/10000,(mon>=12)?(mon-99+12);//计算出年龄
    return 0;
}

热心网友 时间:2023-10-14 09:38

/*修改自http://www.jb51.net/article/39907.htm的程序*/
#include <stdio.h>
#define leapyear(year)((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))

int days(int *day1, int *day2)
{
 int i=0;
 int *tmp;
 int diff = 0;
 const int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
 if(day1[0] == day2[0])
 {
  if(day1[1] == day2[1])
  {
   diff = day1[2] - day2[2];
   diff = (diff < 0)?(-diff):diff;
  }
  else
  {
   if(day1[1] < day2[1])
   {
    tmp = day1;
    day1 = day2;
    day2 = tmp;
   }
   for(i=day2[1]+1; i<day1[1]; i++)
   {
    diff +=  month[i];
   }
   diff += month[day2[1]] - day2[2] + day1[2];
   if(day2[1] <= 2 && day1[1] >2)
    if(leapyear(day2[0]))
     diff++;
  }
 }
 else
 {
  if(day1[0] < day2[0])
  {
   tmp = day1; 
   day1 = day2;
   day2 = tmp;
  }
  for(i=day2[0]+1; i<day1[0]; i++)
  {
   if(leapyear(i))
    diff += 366;
   else
    diff += 365;
  }
  for(i=day2[1]+1; i<=12; i++)
  {
   diff += month[i];
  }
  diff += (month[day2[1]] - day2[2]);
  if(day2[1] <= 2)
   if(leapyear(day2[0]))
    diff++;
  for(i=1; i<day1[1]; i++)
  {
   diff += month[i];
  }
  diff += day1[2];
  if(day1[1] > 2)
   if(leapyear(day1[0]))
    diff++;
 }
 return diff;
}
void main(void)
{
 int day1[3], day2[3];
 int day = 0;

 printf("Input His/Her Birthday\n");
 scanf("%d-%d-%d",&day1[0], &day1[1], &day1[2]);
 printf("Input Current Date\n");
 scanf("%d-%d-%d",&day2[0], &day2[1], &day2[2]);
 day=days(day1, day2);
 printf("His/Her age is %2.2f\n" , (float)day/365);
 getch();
}

热心网友 时间:2023-10-14 09:38

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int age, byear, bmonth, bday, nyear, nmonth, nday;
printf("Please input the birthday(XXXX,XX,XX):");
scanf("%d,%d,%d", &byear, &bmonth, &bday);
printf("/nPlease input now date(XXXX,XX,XX):");
scanf("%d,%d,%d", &nyear, &nmonth, &nday);
age = nyear - byear;
if (nmonth > bmonth)
age++;
else if (nmonth == bmonth)
if (nday > bday)
age++;
printf("/nAge is %d/n", age);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
保险跟理财有什么不同 轻度半月板损伤能步行吗 半月板损伤无法走路是怎么回事 设计院协同设计 易燃品易燃品定义 助力车办驾驶证年龄限制是几岁? 什么叫用信额度 信贷额度什么意思 什么叫信贷额度 超出信贷额度什么意思 昆虫记读书笔记与句子摘抄感悟 增强型PMOS管的开启电压什么? 离婚孩子抚养费是否可以强制执行 离婚抚养费是否可以强制执行 建军大业欧豪说那就打是多少分钟 协议离婚抚养费是否可以申请强制执行 协议离婚抚养费可不可以申请强制执行 协议离婚的抚养费可以强制执行吗? 挂式空调加氟时高低压怎么区分在制冷的情况下 英语四级口语考试自我介绍(在线等) 协议离婚抚养费可以申请强制执行吗 金隆环球能查看贵金属实时行情吗? 富格林贵金属实时都可以查的吗? 离婚孩子抚养费可以强制执行吗 洛神花泡茶是泡花喝还是泡果喝 洛神花红莓花果茶能不能喝,必胜客的饮料 离婚后孩子抚养费可以强制执行吗 女性必知的五个生理知识 离婚抚养费可以强制执行吗 离婚抚养费算强制执行吗 如何用VB准确计算年龄 《寿司之神》观后感 寿司之神观后感 《寿司之神》所带来的启示 《寿司之神》带给了我们什么 咸阳哪里有好玩的地方 如何成为职业围棋手 请问围棋业余段位是怎么过渡到职业段位的? 职业围棋升段规则 房建构造柱混凝土要求 为什么一张纸最多只能折7次 为什么一张报纸只能折7次 一张纸(无论大小)为什么最多只能对折7次? 报纸为什么只能叠7下 为什么一张纸只能折七次? 爱普生L201彩喷一体机废墨清零器 L201打印机中的废墨收集已到它的寿命,请与爱普生认购机构联系 爱普生L210却纸灯和墨水灯交替闪亮,打印机报废墨收集垫到期。如何让灯熄灭? 爱普生L201墨仓式一体打印机,怎么清零 为什么无论多大一张纸最多只能折7下