📄 d_5_2.cpp
字号:
// D_1_2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
bool leapyear(int);
int interYears(int y1,int m1,int y2,int m2);
int interDays(int y1,int m1,int d1,int y2,int m2,int d2);
int daysOnMonth[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
void main()
{
int year1,month1,day1,year2,month2,day2,total;
cout <<"请输入年月日:";
cin >> year1>>month1>>day1;
cout <<"请输入年月日:";
cin >> year2>>month2>>day2;
total = interYears(year1,month1,year2,month2);
total += interDays(year1,month1,day1,year2,month2,day2);
cout << "期间相隔了"<<total<<"天。";
cin.get(); cin.get(); //等待结束,以便调测程序,可以删除
}
inline bool leapyear(int year)
{
if (((year%4==0 && year%100!=0)||year%400==0))
return true;
else
return false;
}
int interYears(int y1,int m1,int y2,int m2)
{
int days,i;
if (y2> y1+1) // 如果不是相邻的两个年份,则求这两年之间的总天数
{
days = (y2-y1-1)*365;
for (i=y1+1;i<y2;++i)
if (leapyear(i))
++days;
return days;
}
else
return 0;
}
int interDays(int y1,int m1,int d1,int y2,int m2,int d2)
{
int i=m1,j=0,days=0;
if (y1!=y2) // 计算年份不同时的天数
{
for (;i<12;++i)
days += daysOnMonth[i];
for (;j<m2-1;++j)
days += daysOnMonth[j];
days += daysOnMonth[m1-1]-d1+1; // 计算当月当日到当月月尾有多少天
days += d2; // 计算当月开始到当月当日有多少天
if (leapyear(y1)&&m1<=2)
++days;
if (leapyear(y2)&&m2>2)
++days;
}
else
{
if (m1!=m2)
{
for (;i<m2-1;++i)
days += daysOnMonth[i];
days += daysOnMonth[m1-1]-d1+1; // 计算当月当日到当月月尾有多少天
days += d2; // 计算当月开始到当月当日有多少天
if (leapyear(y1)&&m1<=2)
++days;
}
else
days =d2-d1+1;
}
return days;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -