第十七周项目5-玩日期时间
来源:互联网 发布:网店管家个人版数据 编辑:程序博客网 时间:2024/04/29 12:48
定义一个表示时间(包括年、月、日、时、分、秒)的结构体,然后完成下面的功能。
提示:将各个功能分别设计成函数实现,在main函数中调用,进行测试。
要实现的功能是:
(1)输入一个时间(注意各部分数据的取值范围)将输入的时间保存在一个结构体变量中;
(2)输出该日在本年中是第几天(注意闰年问题);
(3)输出这是这一天中的第几秒;
(4)输出这是这一年中的第几秒;(不要认为这个数荒唐,在计算中需要取随机数时需要一个不会重复的“种子数”,这个秒数是常用的。)
(5)求你输入的时间d天后是哪年哪月哪日,将结果保存在一个结构体变量中输出;
运行结果:
s秒后的日期和时间,同上。
同时,如何判断平年闰年。
提示:将各个功能分别设计成函数实现,在main函数中调用,进行测试。
要实现的功能是:
(1)输入一个时间(注意各部分数据的取值范围)将输入的时间保存在一个结构体变量中;
(2)输出该日在本年中是第几天(注意闰年问题);
(3)输出这是这一天中的第几秒;
(4)输出这是这一年中的第几秒;(不要认为这个数荒唐,在计算中需要取随机数时需要一个不会重复的“种子数”,这个秒数是常用的。)
(5)求你输入的时间d天后是哪年哪月哪日,将结果保存在一个结构体变量中输出;
(6)求你输入的时间s秒后是何日何时,将结果保存在一个结构体变量中输出;
/** Copyright (c) 2014,烟台大学计算机学院* All right reserved.* 作者:邵帅* 文件:temp.cpp* 完成时间:2014年12月20日* 版本号:v1.0*/#include<iostream>using namespace std;struct date{ int year; int month; int day; int hour; int min; int sec;};bool year(int y);int day(int y, int m, int d);int sec(int h, int m, int s);int afterday(int y, int m, int d,int n);int aftersec(int y, int m, int d,int h, int m1, int s,int n);int main(){ date date; int days, secs,allsecs; int after,after1; cout << "请输入日期:"; cin >> date.year >> date.month >> date.day; cout << "请输入时间:"; cin >> date.hour >> date.min >> date.sec; days = day(date.year, date.month, date.day); cout << date.year << "年" << date.month << "月" << date.day << "日是这一年的第" << days<< "天。" << endl; secs = sec(date.hour, date.min, date.sec); allsecs=((day(date.year,date.month,date.day))*86400)+secs; cout <<date.hour << ":" << date.min << ":" << date.sec << "是今天的第" << secs << "秒," ; cout << "今年的第" <<allsecs << "秒。" << endl; cout<<"请输入天数:"; cin>>after; cout<<after<<"天后的日期为:"; afterday(date.year,date.month,date.day,after); cout<<endl; cout<<"请输入秒数:"; cin>>after1; cout<<after1<<"秒后的日期为:"; aftersec(date.year, date.month, date.day,date.hour, date.min, date.sec,after1);}int day(int y, int m, int d)// 一年中的第几天{ int sum; switch (m) { case 1: sum = d; break; case 2: sum = d + 31; break; case 3: sum = d + 59; break; case 4: sum = d + 90; break; case 5: sum = d + 120; break; case 6: sum = d + 151; break; case 7: sum = d + 181; break; case 8: sum = d + 212; break; case 9: sum = d + 243; break; case 10: sum = d + 273; break; case 11: sum = d + 304; break; case 12: sum = d + 334; break; } if (year(y)) { if (m > 2) sum--; } return sum;}int sec(int h, int m, int s)// 一天中的第几秒{ int secs; secs = h * 3600 + m * 60 + s; return secs;}int afterday(int y, int m, int d,int n) //d天后的日期{ int mon[12]= {31,28,31,30,31,30,31,31,30,31,30,31}; //每月天数 while(n--) //循环经过每一天, { d++; if(d>mon[m-1]) //过了一个月 { m++; d=1; } if(m>12) //过了一年 { y++; if(year(y)) mon[1]=29; else mon[1]=28; m=1; } } cout<<y<<"年"<<m<<"月"<<d<<"日";}int aftersec(int y, int m, int d,int h, int m1, int s,int n) //过了n秒{ int d1=0; while (n--) { s++; if (s>60) { m1++; s=1; } if (m1>60) { h++; m1=1; } if (h>24) { d1++; h=1; } } afterday(y,m,d,d1); cout<<h<<":"<<m1<<":"<<s<<""<<endl;}bool year(int y) //布尔型,判断是否是闰年{ if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0 && y % 100 == 0)) return true; else return false;}
运行结果:
过程中复杂的是(5)和(6),如何正确处理d天后、s秒后的日期很重要。
int afterday(int y, int m, int d,int n) //d天后的日期{ int mon[12]= {31,28,31,30,31,30,31,31,30,31,30,31}; //每月天数 while(n--) //循环经过每一天, { d++; if(d>mon[m-1]) //过了一个月 { m++; d=1; } if(m>12) //过了一年 { y++; if(year(y)) mon[1]=29; else mon[1]=28; m=1; } } cout<<y<<"年"<<m<<"月"<<d<<"日";}
s秒后的日期和时间,同上。
int aftersec(int y, int m, int d,int h, int m1, int s,int n) //过了n秒{ int d1=0; while (n--) { s++; if (s>60) { m1++; s=1; } if (m1>60) { h++; m1=1; } if (h>24) { d1++; h=1; } } afterday(y,m,d,d1); cout<<h<<":"<<m1<<":"<<s<<""<<endl;}
同时,如何判断平年闰年。
可以使用Bool型参数。
bool year(int y) //布尔型,判断是否是闰年{ if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0 && y % 100 == 0)) return true; else return false;}
@ Mayuko
1 0
- 第十七周 【项目5-玩日期时间】
- 第十七周项目5-玩日期时间
- 第十七周项目 5 玩日期时间
- 第十七周项目5-玩日期时间
- 第十七周项目5-玩日期时间
- 第十七周项目5:玩日期时间
- 第十七周 项目五:玩日期时间
- 第十七周项目五:玩日期时间
- 第十七周 项目五--玩日期时间
- 第十七周项目五 玩日期时间
- 第十七周 【项目5-玩日期时间】(4)
- 第十七周项目5--玩日期时间(4)
- 第十七周项目五(一):玩日期时间
- 第十七周项目五——玩日期时间
- 第十七项目5--玩日期时间(1,2,3)
- 第十七周 【项目5-玩日期时间】(改进版 5)
- 第十七周项目五 玩日期时间-(3)输出这是这一天中的第几秒
- 第十七周项目五 玩日期时间-(4)输出这是这一年中的第几秒
- spring aop(一)--基于JDK
- 通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷
- 矩阵的特征值与特征向量
- Hadoop操作错误记录
- linux动态链接程序运行机制
- 第十七周项目5-玩日期时间
- 有些IP可以ping通,有些IP ping不通,别人无法ping通你的IP
- java程序实现“深度复制文件夹"
- getWritableDatabase()和getReadableDatabase()方法区别
- 黑马程序员——Java基础---面向对象(异常(下))--第10天--第118-123集
- ELF重定位简介
- Android内存那点事儿
- java IO本质
- ELF程序头分析