c++程序 计算两个日期相差的天数
2015-07-11 16:28
555 查看
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
struct Date{
int y;//year
int m;//month
int d;//day in month
};
int isLeap(int y)
{
return y%4==0 && y%100==0 || y%400==0;
}
int daysOfMonth(Date d)
{
int days[12]={31,0,31,30,31,30,31,31,30,31,30,31};
if(d.m!=2)
return days[d.m-1];
else
return 28+isLeap(d.y);
}
int daysOfDate(Date d)
{
int days=0;
for(int y=1;y<=d.y;y++)
days+=365+isLeap(y);
for(int m=1;m<d.m;m++)
days+=daysOfMonth(d);
days+=d.d;
return days;
}
int main()
{
int a;
Date d1,d2;
cout << "Input 2 days days(yyyy mm dd):" << endl;
cin >> d1.y >> d1.m >> d1.d ;
cout << d1.y << "-" << d1.m << "-" << d1.d << endl;
int days1=daysOfDate(d1);
cout << "days1=" << days1 << endl;
cin >> d2.y >> d2.m >> d2.d ;
cout << d2.y << "-" << d2.m << "-" << d2.d << endl;
int days2=daysOfDate(d2);
cout << "days2=" << days2 << endl;
cout << "days distance is " << fabs(days1- days2) << endl;
return 0;
}
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
struct Date{
int y;//year
int m;//month
int d;//day in month
};
int isLeap(int y)
{
return y%4==0 && y%100==0 || y%400==0;
}
int daysOfMonth(Date d)
{
int days[12]={31,0,31,30,31,30,31,31,30,31,30,31};
if(d.m!=2)
return days[d.m-1];
else
return 28+isLeap(d.y);
}
int daysOfDate(Date d)
{
int days=0;
for(int y=1;y<=d.y;y++)
days+=365+isLeap(y);
for(int m=1;m<d.m;m++)
days+=daysOfMonth(d);
days+=d.d;
return days;
}
int main()
{
int a;
Date d1,d2;
cout << "Input 2 days days(yyyy mm dd):" << endl;
cin >> d1.y >> d1.m >> d1.d ;
cout << d1.y << "-" << d1.m << "-" << d1.d << endl;
int days1=daysOfDate(d1);
cout << "days1=" << days1 << endl;
cin >> d2.y >> d2.m >> d2.d ;
cout << d2.y << "-" << d2.m << "-" << d2.d << endl;
int days2=daysOfDate(d2);
cout << "days2=" << days2 << endl;
cout << "days distance is " << fabs(days1- days2) << endl;
return 0;
}
相关文章推荐
- C语言符号优先级
- C++控制台贪吃蛇代码
- C++之运算符重载(1)
- VC++ 6.0 C8051F340 USB PC侧通信 Demo
- C++学习网站
- C++再论单例模式
- C++实现简单遗传算法
- 【err】non-POD类对象的文件读写
- Java数组与c++数组的区别
- C++多线程编程
- C++ 设计三法则 二法则
- C++中关于const的一些使用惯例
- C语言文件操作之fgets()
- 关于C语言书籍推荐:深入学习c语
- 一个简单顺序表的C++实现
- c++隐藏文件
- 【c++】简单的string类的几个基本函数
- c++隐藏文件
- c++ :0x00e08b47 处有未经处理的异常: 0xC00000FD: Stack overflow
- C语言32个关键字总结以及C++几个常用关键字