读书时的小测试题.重新写一遍 .

可以将出生和当前日期定为结构体 这样传值就很方便.

#include <stdio.h>
#include <math.h>
#include <stdbool.h>
int leap_year_arr[12] = {31,29,31,30,31,30,31,31,30,31,30,31};  //闰年
int Ordinary_year_arr[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; //平年bool check_is_leap(int year)
{if ( year%400==0 ){return true;}else if(year%100!=0 && year%4 == 0){return true;}else{return false;}
}
int middle_sum(int born,int now)    //中间年份日子的计算
{int middlesum = 0;while (born+1 < now){if(check_is_leap(born+1)){middlesum = middlesum + 366;}else{middlesum = middlesum + 365;}born++;}
return middlesum;
}
int now_past_day(int pyear,int pmount,int pday)   //今年已经过去多久天
{int sumpastday = 0; //过去的总天数int mount = 0;  //用于累加 去计算过去几个月了;if (check_is_leap(pyear)){while( mount < pmount){sumpastday = sumpastday + leap_year_arr[mount]; //闰年数组mount ++;}}else{while( mount < pmount){sumpastday = sumpastday + Ordinary_year_arr[mount]; //平年数组mount ++;}}sumpastday = sumpastday + pday; //还要算上这个月过去的
return sumpastday;
}
int have_day(int pyear,int pmount,int pday)  //今年还有多少天
{int haveday = 0;if( check_is_leap(pyear)){haveday = 366 - now_past_day(pyear,pmount,pday);}else{haveday = 365 - now_past_day(pyear,pmount,pday);}
return haveday;
}
bool check_entry(int bornyear,int nowyear,int bornmonth,int nowmonth,int bornday, int nowday)
{if( bornyear > nowyear || nowmonth > 12 || bornmonth > 12 || bornday > 31 || nowday > 31){printf("您的输入有误 请输入正确值\n");return false;}else if( !check_is_leap(bornyear) && bornday > 28 && bornmonth == 2){printf("您出生年不是闰年 2月份 只有28 天\n");return false;}else if( !check_is_leap(nowyear) && nowday > 28 && nowmonth == 2){printf("现在不是闰年 2月份 只有28 天\n");return false;}else{return true;}
}
int main()
{int bornyear = 0, bornmonth = 0, bornday = 0;int nowyear = 0, nowmonth = 0, nowday = 0;int sumday = 0;printf("请输入当前日期 年--月--日\n");scanf("%d%d%d",&nowyear,&nowmonth,&nowday);printf("请输入出生年份日期 年--月--日\n");scanf("%d%d%d",&bornyear,&bornmonth,&bornday);if  (check_entry(bornyear,nowyear,bornmonth,nowmonth,bornday,nowday) == false){return 0;}// 总天数等于出生年还剩多少天 + 现在年过去多少天 + 中间年if( bornyear == nowyear){sumday = have_day(bornyear,bornmonth,bornday) - have_day(nowyear,nowmonth,nowday);}else{sumday = have_day(bornyear,bornmonth,bornday) + now_past_day(nowyear,nowmonth,nowday) + middle_sum(bornyear,nowyear);        }printf("你已经来到地球%d天\n",sumday + 1);
return 0;
}

也可以使用时间戳,这样就没上面有意思

#include<stdio.h>
#include<time.h>
#include<stdlib.h>int main()
{char c_born[8] ={0};struct tm* tmp_time = (struct tm*)malloc(sizeof(struct tm));printf("请输入您的出生年--月--日\n");scanf("%s",c_born);strptime(c_born,"%Y%m%d",tmp_time);time_t born_t = mktime(tmp_time);    //转化时间戳//获取系统的时间戳time_t nowtime = time(NULL);double day = difftime(nowtime,born_t);//printf("%f\n",difftime(nowtime,t));printf("您来到地球已经 = %f天\n",day/(60*60*24));
return 0;
}

计算已经生活了多少天的小题目相关推荐

  1. 小森生活一直服务器维护,《小森生活》怎么处理断线黑屏的问题 连接不上服务器解决办法...

    小森生活无可用网关服务器是最近出现的问题,该怎么解决这个不稳定造成的,一般是有多方面的问题,例如是服务器,例如自己的网络出现了问题,该怎么解决,看下面的教程.小森生活无可用网关服务器解决方法无可用网关 ...

  2. Python: 用于计算txt文档的字数的小脚本

    在一次实践中,需要计算txt文档(英文和数字)的字数,并且还要统计路径下的所有txt文档的字数总数. 本来以为很简单,但是在编写的过程中还是出现了一些问题. 首先就是,字数和字符数是不一样的,不能简单 ...

  3. 培智学校计算机教学案例,语文教学案例,培智生活语文教学案例《小书包》

    培智生活语文教学案例<小书包> 王沛 新安县特殊教育学校 喜欢我,就给我一个"好看" 学情分析: 就六班的12名学生情况来看,A组同学具备一定的自学能力,能进行造句及说 ...

  4. 小森生活手游服务器维护,小森生活无可用游戏服务器解决教程

    小森生活无可用网关服务器怎么回事?这个是最近发生的,很多玩家突然登录不了游戏了,很多玩家都在问的,是不是服务器出问题了,还是自己的网络,今天,小编为大家带来了小森生活无可用游戏服务器解决教程.感兴趣的 ...

  5. 关于生活垃圾分类,可以使用垃圾分类小程序进行辅助识别

    关于生活垃圾分类,可以使用垃圾分类小程序进行辅助识别 分类收集 分类收集生活垃圾,不得混合收集已分类的生活垃圾,不得将危险废物.医疗废物.工业固体废物.建筑垃圾.农业固体废物等混入生活垃圾; 按时分类 ...

  6. 有效率的使用计算机,【高效生活】计算机使用中的小技巧

    原标题:[高效生活]计算机使用中的小技巧 有时候,选择比努力更重要. 前言 天下大事,必作于细.平时一些不起眼的细枝末节,却在不知不觉中发挥着巨大的作用.之前,通过在网易博客上分享梦甜姐的浏览器使用技 ...

  7. 生活中十大省钱小秘诀

    生活中十大省钱小秘诀 在日常生活中,人们可能会有这样的感觉:其实也没买什么东西,但是打到工资卡里的钱转瞬即逝.近日美国<商业周刊>却总结了人们在不知不觉中花钱的10种情况,来告戒人们花钱一 ...

  8. 题海拾贝No.8|C语言笔试小题目集锦

    C语言笔试小题目 题目及解析 题目及解析 1.什么是预编译,何时需要预编译? 答:预编译又称为预处理,是做些代码文本的替换工作.处理#开头的指令,比如拷贝#include包含的文件代码,#define ...

  9. JAVA关于字符串字符数组处理的小题目

    JAVA关于字符串&&字符数组的小题目 第二题:分析以下需求,并用代码实现 1.键盘录入一个大字符串,再录入一个小字符串 2.统计小字符串在大字符串中出现的次数 3.代码运行打印格式: ...

最新文章

  1. java集合提取最小的日期_提取Java集合的元素-Java 8方法
  2. 不太平凡的2020、平凡的我
  3. Servlet Filter
  4. php redis decr,Redis Decr 命令
  5. linux判断网站被采集,网站被采集的几个处理方法(非技术)
  6. 编译mod_jk.so
  7. 1036: [ZJOI2008]树的统计Count(树链剖分)
  8. 关于力学环境中振动试验的知识
  9. sklearn.impute.SimpleImputer 数据填充
  10. 上门洗车APP --- Android客户端开发 之 网络框架封装介绍(二)
  11. 如何用Java微信扫码实现签到_详解JAVA后端实现统一扫码支付:微信篇
  12. repo+manifests+git方式管理安卓代码
  13. QGIS加载无偏移卫星地图URL
  14. 跳槽入职字节跳动,给到20K16薪,只因比别人更懂多线程与高并发
  15. 位运算的奇技淫巧:Bit Twiddling Hacks
  16. 机器学习 第三节 第八课
  17. 中文用户输入纠错 综述
  18. html5+语音留言,5元/月!中国联通上线“语音留言”业务
  19. WIFI模块调试_RTL8189FTV
  20. 2022-2028年全球与中国紫外线(UV)传感器行业竞争格局与投资战略研究

热门文章

  1. 渗透测试报告标准编写
  2. android studio 虚拟机adb.exe已停止工作的处理
  3. Android中TextView中string的特殊符号显示的方法
  4. HTML与CSS基础之伪元素(五)
  5. mysql 崩溃恢复_超详细的MySQL数据库InnoDB崩溃恢复机制总结
  6. 韩国防部长会见美驻韩大使 或谈韩日舰机矛盾
  7. 弹窗时候禁止页面滚动
  8. IP地址与无符号整数值相互转换
  9. file命令及Linux重要关键路径介绍
  10. 应用案例:SequoiaDB+Spark搭建医院临床知识库系统