第17周项目5--玩日期时间(两个日期天数之差,秒数之差)
来源:互联网 发布:网络弊大于利辩论稿 编辑:程序博客网 时间:2024/05/16 17:29
/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:刘畅 * 完成日期:2014 年 12 月 20 日 * 版 本 号:v1.0 * * 问题描述:定义一个表示时间(包括年、月、日、时、分、秒)的结构体,然后完成下面的功能(可以在一个main函数中完成,也可以用函数求解,main函数调用即可):(7)用结构体变量给定两个时间,求相差多少天?相差多少秒?* 输入描述:输入两个日期(年月日时分秒),* 程序输出:输出这两个日期。
#include <iostream>using namespace std;struct Time{ int year; int month; int day; int hour; int minute; int second;}time1;Time time2;void getTime(Time &time); //输入一个时间(注意各部分数据的取值范围)将输入的时间保存在一个结构体变量中;void outTime(Time &time); //输出时间;int getscope(string t,int min,int max); //在给定的范围内输入数字;int Dayofmonth(int y,int m); //确定月份的天数;int Dayofyear(Time &time); //输出该日在该年中是第几天(注意闰年问题);int Secondofday(Time &time); //输出这是该天中的第几秒;int Secondofyear(Time &time); //输出这是该年的第几秒; //int Compareday(Time &time1,Time &time2); //输出两个日期相差多少天;int Comparesecond(Time &time1,Time &time2); //输出两个日期相差多少秒。int main(){ Time time1,time2; cout<<"请输入一个时间(依次为年、月、日、时、分、秒):"<<endl; getTime(time1); cout<<"请输入另一个时间(依次为年、月、日、时、分、秒):"<<endl; getTime(time2); outTime(time1); outTime(time2); cout<<"经过计算得出,两个日期之间相差"<<Compareday(time1,time2)<<"天,相差"<<Comparesecond(time1,time2)<<"秒。"; return 0;}void getTime(Time &time){ string t[6]= {"年","月","日","时","分","秒"}; time.year=getscope(t[0],1,9999); time.month=getscope(t[1],1,12); time.day=getscope(t[2],1,Dayofmonth(time.year,time.month)); time.hour=getscope(t[3],0,24); time.minute=getscope(t[4],0,59); time.second=getscope(t[5],0,59);}void outTime(Time &time){ cout<<"时间为:"<<time.year<<"年"<<time.month<<"月"<<time.day<<"日"; cout<<time.hour<<"时"<<time.minute<<"分"<<time.second<<"秒"<<endl; cout<<"这是该年的第"<<Dayofyear(time)<<"天"<<endl; cout<<"这是该天的第"<<Secondofday(time)<<"秒"<<endl; cout<<"这是该年的第"<<Secondofyear(time)<<"秒"<<endl;}int getscope(string t,int min,int max){ int num; cout<<"请输入"<<t<<"的范围:["<<min<<","<<max<<"]:"; do { cin>>num; } while (num<min||num>max); return num;}int Dayofmonth(int y,int m){ int days,i; for(i=1; i<=m; i++) { if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) days=31; else if (i==4||i==6||i==9||i==11) days=30; else if ((y%4==0 && y % 100 != 0)||y% 400 == 0) days=29; else days=28; } return days;}int Dayofyear(Time &time){ int days1=0,n=1; while (n<time.month) { days1+=Dayofmonth(time.year,n); ++n; } days1+=time.day; return days1;}int Secondofday(Time &time){ return time.hour*3600+time.minute*60+time.second;}int Secondofyear(Time &time){ int s; s=(Dayofyear(time)-1)*24*3600+Secondofday(time); return s;}int Compareday(Time &time1,Time &time2){ Time time3; int sum1,i,m=0; if (time1.year>time2.year) { time3=time1; time1=time2; time2=time3; } for (i=time1.year; i<time2.year; ++i) { if ((i%4==0&&i%100!=0)||i%400==0) m++; } sum1=(time2.year-time1.year)*365+m+Dayofyear(time2)-Dayofyear(time1); return sum1;}int Comparesecond(Time &time1,Time &time2){ Time time4; int sum2; if (time1.year>time2.year) { time4=time1; time1=time2; time2=time4; } sum2=Compareday(time1,time2)*24*3600+Secondofday(time2)-Secondofday(time1); return sum2;}
运行结果:
学习心得:
好吧,困扰了我半天的问题在把前面那个生日之差的项目补上之后迎刃而解了。
虽然不知道正确与否,但能做到这样,我已经很开心了。不过不足的是实在不知道怎么去写注释的好,读者们敬请见谅啊。
这是在昨晚那篇博文也就是这个项目的前六个问题的代码上加以删改补充的,突然又找到了前面一个没发现的错误----时的范围应该是0到23,之前写成了24。
1 0
- 第17周项目5--玩日期时间(两个日期天数之差,秒数之差)
- 计算两个日期的天数之差
- 面试题之求两个日期之间的天数差
- js 两个日期之差
- 第17周项目4-日期结构体之日期之差
- JS计算日期天数之差
- 计算两个日期的天数差
- 计算两个日期的天数差
- j2ME-计算两个日期的天数差
- 计算两个日期的天数差
- javascript计算两个日期天数差
- JS DATE 计算两个日期之差
- 求两个日期之差 C/C++
- 日期之差
- 日期之差
- ios开发之 时间日期差计算
- 第17周项目5-玩日期时间(部分)
- 第17周项目5-玩日期时间(部分)
- hdu 2485 迭代加深搜索
- 计算机经典书籍电子书合集(适合计算机学生学习以及程序员笔试、面试)
- matlab 二值化;MFC 显示灰度图片方法。
- NYOJ305表达式求值
- Java断点调试
- 第17周项目5--玩日期时间(两个日期天数之差,秒数之差)
- leetcode——Edit Distance
- 高级碰撞检测(一)
- 数据结构Map—java描述(2)—HashMap的两种遍历方法
- Mac OSX 10.10 Pyqt环境搭建全过程
- 做機器人一定很貴嗎?用塑膠也能做出捏起小鋼珠的機器手臂
- STL六大组件之——分配器(内存分配,好深奥的东西)
- Objective-C成员变量的作用域
- 设置View只显示透明下边框、透明背景框、阴影背景框的方法