网站建设logo图片,我要自学网首页网站建设,关于协会网站建设的建议,南京比较好的网络策划公司问题描述 链接#xff1a;https://www.nowcoder.com/questionTerminal/ccb7383c76fc48d2bbc27a2a6319631c 有两个日期#xff0c;求两个日期之间的天数#xff0c;如果两个日期是连续的我们规定他们之间的天数为两天 输入描述: 有多组数据#xff0c;每组数据有两行#x…问题描述 链接https://www.nowcoder.com/questionTerminal/ccb7383c76fc48d2bbc27a2a6319631c 有两个日期求两个日期之间的天数如果两个日期是连续的我们规定他们之间的天数为两天 输入描述: 有多组数据每组数据有两行分别表示两个日期形式为YYYYMMDD 输出描述: 每组数据输出一行即日期差值 示例1 输入 20110412
20110422 输出 11 思路 推荐思路(乾哥的思路): 软男说算法能过就行, 尽可能把实现的方法想简单些(emmmm) 计算第一个日期中月份和日到一月一日的天数, 记为days1计算第一个日期中月份和日到一月一日的天数, 记为days2只计算两个日期的年份对应的日期差值 大辣鸡思路(me): 计算年之间差值计算月之间差值计算日之间差值代码 #include cstdioint month[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 isLeap(int year) {/** 求平年闰年* 平年返回0* 闰年返回1*/if (year % 100 ! 0 year % 4 0 || year % 400 0) {return 1;} else {return 0;}
}int main() {int y1 0, m1 0, d1 0, y2 0, m2 0, d2 0;while (scanf(%4d%2d%2d, y1, m1, d1) ! EOF) {scanf(%4d%2d%2d, y2, m2, d2);//平年365天//闰年366天int days1 0;//日期一, 月及日到当年一月一日的天数int days2 0;//日期二, 月及日到当年一月一日的天数int days 0; //最后返回两日期的差值for (int i 1; i m1; i) {/** 求日期一, 月到当年一月一日的天数*/days1 month[i][isLeap(y1)];}for (int i 1; i m2; i) {/** 求日期二, 月到当年一月一日的天数*/days2 month[i][isLeap(y2)];}//求日期一,日期二, 日到当月一日的天数days1 d1;days2 d2;//求两日期年份差值if (y1 y2) {for (; y2 y1; y2) {if (isLeap(y2) 1) {days 366;} else {days 365;}}days days1 - days2;} else {for (; y1 y2; y1) {if (isLeap(y1) 1) {days 366;} else {days 365;}}days days2 - days1;}//按照题目叙述,需要返回差值加一printf(%d\n, days 1);}
}转载于:https://www.cnblogs.com/edhg/p/7745914.html