关于日期的结构定义如下: struct DateG{ int yy,mm,dd;};

编写两个函数,一个计算自公元1年1月1日到指定的日期共经历了多少天。另一个是前一个函数的逆函数:由自公元1年1月1日历经指定的天数后的日期(返回年月日构成的日期)。

函数接口定义:

DateG days2Date(int x);
int Days(DateG x);

裁判测试程序样例:

#include <iostream>
using namespace std;
struct DateG{int yy,mm,dd;
};
char leapYear(int year);//闰年否
struct DateG _DateG(char *st);{//"1919-9-9"-->{1919,9,9}
struct DateG Add(struct DateG x,int y);//{1919,9,9}+50-->{1919,10,29}
char* Date2string(struct DateG x);//{1919,9,9}-->"1919-09-09"//以上为测试程序提供的测试用函数,略去不表,
//以下两函数是必须自己完成的函数
struct DateG days2Date(int x);{//from:{1,1,1} + 100-->{1,4,11}
int Days(struct DateG x);// {2,4,11}    return 465   from{1,1,1} int main(){char st[12];scanf("%s",st);struct DateG d1=_DateG(st),d2=Add(d1,60*365);printf("%s\n",Date2string(d2));   d2=Add(d2,-1000);printf("%s\n",Date2string(d2));d2=_DateG("2020-1-23");printf("%.2f\n",(Days(d2)-Days(d1))/365.0);return 0;
}
/* 请在这里填写答案 */

输入样例:
2001-1-1
输出样例:
[2060-12-17]
[2058-03-23]
19.07

帮其他专业的同学写网课作业,见到这道有点烦人的题目,一看网上没有现成的答案,那就自己写一份先码这把,没啥特别的技巧,典型的模拟,注意细节就好。

struct DateG days2Date(int x) {struct DateG QWQ;QWQ.yy = 1;QWQ.mm = 1;QWQ.dd = 1;while (x--) {QWQ.dd++;if ((QWQ.yy % 4 == 0 && QWQ.yy % 100 != 0) || QWQ.yy % 400 == 0) {//是闰年   if ((QWQ.mm == 1 || QWQ.mm == 3 || QWQ.mm == 5 || QWQ.mm == 7 || QWQ.mm == 8 || QWQ.mm == 10 || QWQ.mm == 12) && QWQ.dd > 31){QWQ.dd = 1;QWQ.mm++;if (QWQ.mm > 12) {QWQ.mm = 1;QWQ.yy++;}}else if (QWQ.mm == 2 && QWQ.dd > 29) {//闰年二月单独讨论   QWQ.dd = 1;QWQ.mm++;}else if ((QWQ.mm == 4 || QWQ.mm == 6 || QWQ.mm == 9 || QWQ.mm == 11) && QWQ.dd > 30) {QWQ.dd = 1;QWQ.mm++;}}else {//非闰年   if ((QWQ.mm == 1 || QWQ.mm == 3 || QWQ.mm == 5 || QWQ.mm == 7 || QWQ.mm == 8 || QWQ.mm == 10 || QWQ.mm == 12) && QWQ.dd > 31){QWQ.dd = 1;QWQ.mm++;if (QWQ.mm > 12) {QWQ.mm = 1;QWQ.yy++;}}else if (QWQ.mm == 2 && QWQ.dd > 28) {//二月单独讨论   QWQ.dd = 1;QWQ.mm++;}else if ((QWQ.mm == 2 || QWQ.mm == 4 || QWQ.mm == 6 || QWQ.mm == 9 || QWQ.mm == 11) && QWQ.dd > 30) {QWQ.dd = 1;QWQ.mm++;}}}return QWQ;
}int Days(struct DateG x) {int res = 0, flag = 1;while (flag == 1) {res++;x.dd--;if ((x.yy % 4 == 0 && x.yy % 100 != 0) || x.yy % 400 == 0) {//闰年  if ((x.mm == 1 || x.mm == 3 || x.mm == 5 || x.mm == 7 || x.mm == 8 || x.mm == 10 || x.mm == 12) && x.dd == 0) {if (x.mm == 8 || x.mm == 1)x.dd = 31;else if (x.mm == 3)x.dd = 29;elsex.dd = 30;x.mm--;if (x.mm == 0) {x.mm = 12;x.yy--;}}else if ((x.mm == 2 || x.mm == 4 || x.mm == 6 || x.mm == 9 || x.mm == 11) && x.dd == 0) {x.dd = 31;x.mm--;}}else {//非闰年  if ((x.mm == 1 || x.mm == 3 || x.mm == 5 || x.mm == 7 || x.mm == 8 || x.mm == 10 || x.mm == 12) && x.dd == 0) {if (x.mm == 8 || x.mm == 1)x.dd = 31;else if (x.mm == 3)x.dd = 28;elsex.dd = 30;x.mm--;if (x.mm == 0) {x.mm = 12;x.yy--;}}else if ((x.mm == 2 || x.mm == 4 || x.mm == 6 || x.mm == 9 || x.mm == 11) && x.dd == 0) {x.dd = 31;x.mm--;}}if (x.yy == 1 && x.mm == 1 && x.dd == 1)flag = 0;}return res;
}

要是有空的希望大家来我自建的博客看看!(:з」∠)

pta习题:退休日期推算相关推荐

  1. MySql日期处理系列-常用的日期推算处理

    以下都是我平时用的一些日期推算处理方法,方法并不一定是最有效率的.全部均通过测试! 转载请注明来自[phpchina.com] #title: 常用的日期推算处理 #auther: 小强(占卜师) # ...

  2. java日期算前一天_java 根据系统日期获取前一天、后一天时间(根据初始日期推算出期望(向前/向后)日期)...

    1.情景展示 java 根据系统当前日期获取前一天日期.后一天日期,或者根据初始日期推算出期望(向前/向后)日期. 2.解决方案 导包 import java.text.ParseException; ...

  3. 根据日期推算星期和历法由来

    太阳历和公历(儒略历与格里历) 现在世界上通用的历法--公历,有人曾似是而非地称之为"西历".其实,究其根 源,这种历法并非产生于西方,而是产生于6000多年前的古埃及.     ...

  4. [PTA]习题9-3 平面向量加法

    [PTA]习题9-3 平面向量加法 本题要求编写程序,计算两个二维平面向量的和向量. 输入格式: 输入在一行中按照"x₁ y₁ x₂ y₂"的格式给出两个二维平面向量v₁ = (x ...

  5. 2015年第六届蓝桥杯C/C++程序设计本科B组省赛 星系炸弹(日期推算)

    星系炸弹 在X星系的广袤空间中漂浮着许多X星人造"炸弹",用来作为宇宙中的路标. 每个炸弹都可以设定多少天之后爆炸. 比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2 ...

  6. JAVA 日期推算---算法

    日期推算描述:设置当前日期和推算时间 转载请注明:http://blog.csdn.net/tjj93622 1.一个日期推算: //固定日期的推算long tui = 28;//需要推算的天数Str ...

  7. robotframework-给定日期推算星期几

    前段时间有同事问我robot上有没有办法知道指定的某个日期是星期几,当时没有想起来,后来一直忙,直到现在才空下来,有时间解决一下这个问题,关于日期推算星期几,使用到泰勒公式,: 根据 蔡勒(Zelle ...

  8. 通过身份证号 计算退休日期 例男60岁,女55岁退休

    Java通过身份证号 计算退休日期 例男60岁,女55岁退休 直接上代码 /*** 根据身份证号计算退休日期* @return*/@ApiOperation("根据身份证号计算账号有效期&q ...

  9. Access根据出生日期计算年龄_使用EDATE函数根据出生日期计算退休日期!

    在企业事单位,从事人力资源工作的朋友可能曾经遇到过计算员工退休日期的问题.比如在下表所示的EXCEL数据中,假如男性的法定退休年龄为60岁,女性的法定年龄为55岁,那么使用EDATE函数结合IF函数计 ...

最新文章

  1. 使用外部表关联MySQL数据到Oracle
  2. 【想象不到的俄罗斯】……太震撼了……
  3. Linux驱动编程 step-by-step (九)字符设备模拟pipe的驱动程序
  4. nodejs应用错误消息PayloadTooLarge的处理
  5. 【斜率优化】仓库建设(luogu 2120)
  6. PP视频怎么查看云钻的兑换记录呢
  7. python编程基础知识体系_【汇总】Python 编程核心知识体系
  8. 解决sourceTree的git clone 报SSH密钥认证失败的问题
  9. 如何用Github删除repository
  10. 小程序毕设作品之微信积分商城小程序毕业设计成品(6)开题答辩PPT
  11. PHP长方体体积,长方体体积公式
  12. Ubuntu16.04 64位系统下面安装JDK1.7
  13. 大数据疫情可视化平台1_基于Hadoop3.2.1、Hive3.1.2、搭建疫情信息可视化系统
  14. JAVA学习心得--自勉(转)
  15. 上海控安入选首批工控安全防护能力贯标咨询机构名单
  16. 一款运动类APP开发需要哪些功能
  17. redis-Java集成Redis
  18. 天气预报在计算机的应用中是,计算机在天气预报中的应用.ppt
  19. 数学建模之层次分析法AHP
  20. PPTV智能电视喊来各电视品牌,要用百亿体育IP覆盖1亿终端

热门文章

  1. SQL Server视频总结(一):SQL Server概述
  2. 数据结构--一元多项式
  3. 十分有用的cut剪切命令
  4. Win7有多条隧道适配器(isatap、teredo、6to4)的原因及关闭方法(转)
  5. 钛资本研究院:创业公司如何搭建高管团队,实现组织跃升?
  6. HDU1799-组合公式变形
  7. 火山PC-安卓-易语言混合通讯教程(火山视窗)
  8. Font-AweSome在Vue中的使用
  9. python速度比较_列表与元组的速度比较
  10. 分享一下我的一些学习方法