(C++)设计一个程序能计算一个日期加上若干天后是什么日期and计算日期差值

news/2024/7/3 4:42:26

输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。
输出m行,每行按yyyy-mm-dd的个数输出。

#include<cstdio>//判断是否是闰年 
bool isLeap(int year){return (year%4==0&&year%100!=0)||year%400==0;
}//用二维数组存平年和闰年每个月的天数,[i][0]为平年,[i][1]为闰年
int monthDay[13][2]={{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}}; int main(){int n,yy,mm,dd,inc;scanf("%d",&n);while(n--){scanf("%d%d%d%d",&yy,&mm,&dd,&inc);while(inc--){dd++;if(isLeap(yy)){if(dd==monthDay[mm][1]+1){dd=1;mm++;}}else{if(dd==monthDay[mm][0]+1){dd=1;mm++;}}if(mm==13){mm=1;yy++;} }printf("%d-%02d-%02d\n",yy,mm,dd);}return 0;
}

收获:
①让日期不断加一的新颖思路
②月份的二维数组
③判断是否到下一个月的方法dd==monthDay[mm][0]+1

和这个题一母同胞的还有计算日期差值(同一天算做1)
注意:输入的第一个日期未必早于第二个,需要进行判断,必要时交换两个日期

#include<cstdio>
#include<cstring>
#include<cmath>int daysInMonth[2][13] = {{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};void swap(int* p1,int* p2){int temp = *p1;*p1 = *p2;*p2 = temp;
}int isLeap(int year){//如果是闰年,返回1 ,否则返回0 if((year%4 == 0 && year%100 != 0)||(year%400 == 0)){return 1;}else{return 0;}
}int main(){int st,nd;	scanf("%d%d",&st,&nd);if(st>nd){//如果第一个日期比第二个迟,则交换它俩 int* p = &st;int* q = &nd;swap(p,q);}	
//	printf("%d %d",st,nd);int y1,m1,d1,y2,m2,d2;y1 = st/10000;m1 = st%10000/100;d1 = st%100;y2 = nd/10000;m2 = nd%10000/100;d2 = nd%100;int ans = 1;while(!((y1 == y2)&&(m1 == m2)&&(d1 == d2))){d1 ++;if(d1 == daysInMonth[isLeap(y1)][m1]){m1 ++;d1 = 1;}if(m1 == 13){y1 ++;m1 = 1;}ans ++;}printf("%d\n",ans);return 0;}

http://lihuaxi.xjx100.cn/news/241716.html

相关文章

删除字符串中出现次数最少的字符

在公交车上看一博客实现删除字符串中出现次数最少的字符&#xff0c;认为里面使用数组来作为hash很好&#xff0c;所以我就自己实现一遍。要求&#xff1a;实现删除一个字符串中出现次数最少的字符。输出删除后的字符&#xff0c;要求安装原来顺序输出。假设出现次数一样&#…

软件测试培训分享:软件测试的职业发展方向有哪些

很多人都觉得软件测试在互联网行业入门是比较轻松的&#xff0c;对于如此轻松的行业&#xff0c;它所在的职业发展前景怎么样呢?软件测试的职业发展方向有哪些呢?本期软件测试培训分享内容请看以下详细介绍。 软件测试的职业发展方向有哪些?职业的选择对于现在的年轻人来说相…

(C++)CSP202006-2 稀疏向量 two pointers

#include<cstdio>const int M 500000;//a,b<5*10^5 int u[M1][2];//第一维是index,第二维是value int v[M1][2];int main(){//1.读入n,a,b//2.对数组进行遍历&#xff0c;如果第一位相等&#xff0c;将第二维相乘 int n,a,b,i;long long ans0;scanf("%d%d%d&qu…

C# GUID的使用

GUID&#xff08;全局统一标识符&#xff09;是指在一台机器上生成的数字&#xff0c;它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成GUID的API。生成算法很有意思&#xff0c;用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。GUID的唯一缺陷在于生…

github上fork了别人的项目后,再同步更新别人的提交

我从github网站和用Git命令两种方式说一下。 github网站上操作 打开自己的仓库&#xff0c;进入code下面。点击new pull request创建。 选择base fork选择head fork点击Create pull request&#xff0c;并填写创建信息。6. 点击Merge pull request 合并从源fork来的代码。 7. 完…

UI培训教程分享:Ui设计的细节规范有哪些需要注意?

在职场中&#xff0c;有很多UI设计师是零经验的&#xff0c;都是刚学会技术就来入职的&#xff0c;与经验丰富的其他成员来说&#xff0c;新人一定要提高自己的工作能力&#xff0c;本篇UI培训教程为大家分享的是Ui设计的细节规范有哪些需要注意?希望能给大家在工作中带来帮助…

c语言实现线性结构(数组与链表)

由于这两天看了数据结构&#xff0c;所以又把大学所学的c语言和指针"挂"起来了。本人菜鸟一枚请多多指教。下面是我这两天学习的成果&#xff08;数组和链表的实现&#xff0c;用的是c语言哦&#xff01;哈哈&#xff09;。&#xff08;一&#xff09;数组的实现和操…

1544_AURIX_TC275_CPU子系统_存储寻址以及子系统寄存器

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 继续TC275的CPU子系统的学习。 1. 从第一部分标注信息看&#xff0c;其实CPU的特殊功能寄存器是可以跨核去操作其他的CPU的。 2. 关于存储映射的部分&#xff0c;跟内核手册中的介绍是一样…