第17周项目5-玩日期时间
来源:互联网 发布:最快的网络借款 编辑:程序博客网 时间:2024/05/01 03:37
/* *Copyright (c) 2014, 烟台大学计算机学院 *All rights reserved. *文件名称:week17-project5.cpp *作者:高赞 *完成日期:2014年 12 月 19 日 *版本号:v1.0 * */#include <iostream>using namespace std;struct time{ int year; int month; int day; int hour; int minute; int second;} ;void cintime(time*);int days(int,int,int);int dseconds(int,int,int);int yseconds(int,int);time passdays(time *,int,int);void passseconds(time *,int,int);void defferdays(int,int,int,int);void defferseconds(int,int,int,int);int main(){ int d,s,sumdays1,sumdays2,dayseconds1,dayseconds2,yearseconds1,yearseconds2; time t,t1,t2; cintime(&t);//输入一个时间并判断取值范围是否正确 sumdays1=days(t.year,t.month,t.day);//求该日是本年的第几天 cout<<"该日在本年是第"<<sumdays1<<"天。"<<endl; dayseconds1=dseconds(t.hour,t.minute,t.second);//求此时是这一天的第几秒 cout<<"此时是这一天的第"<<dayseconds1<<"秒。"<<endl; yearseconds1=yseconds(sumdays1,dayseconds1);//求此时是这一年的第几秒 cout<<"此时是这一年的第"<<yearseconds1<<"秒。"<<endl; cout<<"输入一个天数:"; cin>>d; t1=passdays(&t,d,sumdays1);//求输入d天后是哪年哪月哪日 cout<<d<<"天后日期是"<<t1.year<<"年"<<t1.month<<"月"<<t1.day<<"日。"<<endl; cout<<"输入一个秒数:"; cin>>s; passseconds(&t,s,yearseconds1);//求输入秒数后计算是何年何月何日 何时何分何秒 cout<<endl<<"再输入一个时间。。。"<<endl; cintime(&t2);//输入第二个时间并判断取值范围是否正确 sumdays2=days(t2.year,t2.month,t2.day);//求该日是本年的第几天 defferdays(t.year,t2.year,sumdays1,sumdays2);//两时间相差的天数 dayseconds2=dseconds(t2.hour,t2.minute,t2.second);//求此时是这一天的第几秒 yearseconds2=yseconds(sumdays2,dayseconds2);//求此时是这一年的第几秒 defferseconds(t.year,t2.year,yearseconds1,yearseconds2);//两时间相差的秒数 return 0;}void cintime(time *p)//输入一个时间并判断取值范围是否正确{ int monthlimit(int,int); cout<<"请输入年、月、日:"; cin>>p->year>>p->month>>p->day; int num=monthlimit(p->month,p->year); while(p->year<0||p->month<=0||p->month>12||p->day<=0||p->day>num) { cout<<"输入范围有误,重新输入时分秒:"; cin>>p->year>>p->month>>p->day; } cout<<"请输入时、分、秒:"; cin>>p->hour>>p->minute>>p->second; while(p->hour<0||p->hour>24||(p->hour==24&&p->minute==0&&p->second==0) ||p->minute<0||p->minute>=60||p->second<0||p->second>=60) { cout<<"输入范围有误,重新输入时分秒:"; cin>>p->hour>>p->minute>>p->second; }}int monthlimit(int m,int y)//设置每月的天数上限{ int s; switch (m) { case 2: { if (((y%4 == 0 && y%100 != 0) || y%400 == 0)) s=29; else s=28; } break; case 4: case 6: case 9: case 11: s=30; break; case 1: case 3: case 5: case 7: case 8: case 10: case 12: s=31; break; } return s;}int days(int y, int m, int d)//求该日是本年的第几天{ int i,sumdays; for (i=1; i<=m; ++i) { switch (i) { case 1: sumdays=0; break; case 3: { if (((y%4 == 0 && y%100 != 0) || y%400 == 0)) sumdays+=29; else sumdays+=28; } break; case 2: case 4: case 6: case 8: case 9: case 11: sumdays+=31; break; case 5: case 7: case 10: case 12: sumdays+=30; break; } } sumdays+=d; return sumdays;}int dseconds(int h,int m,int s)//求此时是这一天的第几秒{ int se=(3600*h+60*m+s); return se;}int yseconds(int d,int s)//求此时是这一年的第几秒{ int sum=3600*24*(d-1)+s; return sum;}time passdays(time *t,int d,int s)//求输入d天后是哪年哪月哪日{ time newt; newt.year=t->year; newt.month=1; newt.day=1; s+=d-1; int n1,n2=31; if (((newt.year%4 == 0 && newt.year%100 != 0) || newt.year%400 == 0)) n1=366; else n1=365; while(s>=n1) { s-=n1; ++newt.year; if (((newt.year%4 == 0 && newt.year%100 != 0) || newt.year%400 == 0)) n1=366; else n1=365; } while(s>=n2) { s-=n2; ++newt.month; n2=monthlimit(newt.month,newt.year); } newt.day+=s; return newt;}void passseconds(time *t,int se,int s)//求输入秒数后计算是何年何月何日 何时何分何秒{ time newt; newt.year=t->year; newt.month=1; newt.day=1; s+=se; newt=passdays(&newt,0,s/(3600*24)); s=s%(3600*24); newt.hour=0; newt.minute=0; newt.second=0; while (s>=3600) { s-=3600; newt.hour++; } while (s>=60) { s-=60; newt.minute++; } newt.second=s; cout<<se<<"秒后的时间是"<<newt.year<<"年"<<newt.month<<"月"<<newt.day<<"日" <<newt.hour<<"时"<<newt.minute<<"分"<<newt.second<<"秒。"<<endl;}void defferdays(int y1,int y2,int d1,int d2)//两时间相差的天数{ int i,j,days=0; if(y1>y2) { i=y2; j=y1; days=d1-d2; } else { i=y1; j=y2; days=d2-d1; } for(; i<j; ++i) { days+=365; if (((i%4 == 0 && i%100 != 0) || i%400 == 0)) days++; } cout<<"两时间相差"<<days<<"天。"<<endl;}void defferseconds(int y1,int y2,int s1,int s2)//两时间相差的秒数{ int i,j,seconds=0; if(y1>y2) { i=y2; j=y1; seconds=s1-s2; } else { i=y1; j=y2; seconds=s2-s1; } for(; i<j; ++i) { seconds+=(3600*24*365); if (((i%4 == 0 && i%100 != 0) || i%400 == 0)) seconds+=(3600*24); } cout<<"两时间相差"<<seconds<<"秒。"<<endl;}
0 0
- 第17周项目5-玩日期时间
- 第17周项目5--玩日期时间
- 第17周项目5-玩日期时间
- 第17周【项目 5-玩日期时间】
- 第17周项目5-玩时间日期
- 第17周项目5-玩日期时间(部分)
- 第17周项目5-玩日期时间(部分)
- 第17周 项目5-玩日期时间
- 第17周项目5-玩日期时间
- 第17周项目5-玩日期时间
- 第17周项目5-玩日期时间
- 第17周 项目5 玩日期时间
- 第17周项目5 玩日期时间
- 17周项目5--玩日期时间
- 2014秋C++第17周 项目5参考 玩日期时间
- 第17周项目5-玩日期时间(v1.0)
- 第17周上机实践项目5——玩日期时间(1)(2)
- 第17周上机实践项目5——玩日期时间(3)
- openfire
- refreshing X Gradle project, building ‘MyApplication' Gradle project info ------android studio
- Java中泛型插入排序,继承Comparable接口
- Struts、Servlet对Ajax的简单实现
- Visual C++实现微秒级精度定时器
- 第17周项目5-玩日期时间
- driver 中计算时间
- C++11新特性(二)override, final 简单使用
- pycharm工具使用
- Jobs的成功
- 网卡
- 黑马程序员——Java语言基础——07.IO流(1)字符流和字节流
- 查看文件的glibc版本要求和内核版本要求
- Qt编译mysql以及创建表后进行导入操作