简易程序2014年11月14至2015年1月16日一共多少天?

 我来答
Lisp_1
2015-02-04 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1373
采纳率:86%
帮助的人:354万
展开全部

你好,为你用C++编写了一个计算天数的简易程序;已将首天和末天设为

2014年11月14和2015年1月16日;

代码如下:

#include <iostream> 

using namespace std;

class date  //声明DATE类

{

int year;//声明类成员year

int month;//声明类成员month

int day;//声明类成员day

public://以下为公有属性

date(int y, int m, int d)  //构造函数,传入参数y,m,d

{

year = y; month = m; day = d; //分别赋值给类成员year,month,day

}

void disp()//显示年月日函数

{

cout << year << "." << month << "." << day << endl;//分别显示年月日,格式为年.月.日

}

friend int count_day(date &d, int); //声明友元函数 count_day 天数双向计算函数,方向由传入的int是否为0决定

friend int leap(int year);//声明友元函数leap 判断传入的year是否是闰年

friend int subs(date d1, date d2);//声明友元函数subs 计算两个传入的date对象d1和d2相差多少天

};

int count_day(date &d, int flag) //count_day实现

{

static int day_tab[2][12] = { { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } }; //每月天数数组,下标0为非闰年各月天数,下标1为闰年

int p, i, s;//声明变量p,i,s

if (leap(d.year))//如果传入对象d的year成员为闰年

p = 1; //则取数组下标为1

else

p = 0;//否则取0

if (flag)//如果传入的flag变量非0

{

s = d.day;//s等于当月的天数

for (i = 1; i<d.month; i++) //循环,加上之前每月的天数

s += day_tab[p][i - 1];

}

else  //否则,当flag=0

{

s = day_tab[p][d.month] - d.day;  //s=该月天数减去d的日数(也就是日期d离本月结束还有多少天)

for (i = d.month + 1; i <= 12; i++) //循环,加上该月之后每月的天数

s += day_tab[p][i - 1];

}

return(s);//返回s

}

int leap(int year)//闰年判断函数,是闰年返回1,否则返回0

{

if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)

return 1;

else

return 0;

}

int subs(date d1, date d2) //计算d1和d2相距多少天

{

int days, day1, day2, y;

if (d1.year<d2.year)  //如果d2年份大于d1

{

days = count_day(d1, 0); //计算d1距年底还有多少天

for (y = d1.year + 1; y<d2.year; y++) //计算d1年份的之后一年到d2的年份的之前一年中间相隔多少天

if (leap(y)) //是闰年就加366天

days += 366L;

else

days += 365L;//否则加365天

days += count_day(d2, 1); //计算d2所在年到d2所在日有多少天

}

else if (d1.year == d2.year)  //如果年份相等

{

day1 = count_day(d1, 1);//计算d1距年初有多少天

day2 = count_day(d2, 1);//计算d2距年初有多少天

days = day2 - day1;//相减即为相隔天数

}

else//否则,即如果d1年份大于d2,反向计算,过程基本同第一个if

{

days = count_day(d2, 0);

for (y = d2.year + 1; y<d1.year; y++)

if (leap(y))

days += 366L;

else

days += 365L;

days += count_day(d1, 1);

}

return days;

}

void main()//主函数

{


date d1(2014, 11, 14), d2(2015, 1, 16); 

int ds = subs(d1, d2);//调用函数subs计算天数,赋值给ds

cout << "日期d1:"; d1.disp(); //显示日期d1

cout << "日期d2:"; d2.disp();//显示日期d2

cout << "d1至d2一共" << ds << "天(注:d1不计算在内而d2计算在内)" << endl;//输出天数ds

}

运行结果如下:

即2014年11月14日至2015年1月16日一共64天(2014年11月14日不计算在内而2015年1月16日计算在内)。

苏笙珞
2015-02-04
知道答主
回答量:85
采纳率:0%
帮助的人:20.7万
展开全部
64
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友58b617c
2021-08-07 · TA获得超过2247个赞
知道小有建树答主
回答量:7157
采纳率:88%
帮助的人:344万
展开全部
一共是
根据计算
2014-11-14至2014-12-31,共计46天
2015-1-1至2015-1-16,共计16天
合计为62天
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
您可能需要的服务
百度律临官方认证律师咨询
平均3分钟响应 | 问题解决率99% | 24小时在线
立即免费咨询律师
16161人正在获得一对一解答
长沙森林舞者2分钟前提交了问题
贵阳山水情深1分钟前提交了问题
深圳蓝天飞翔3分钟前提交了问题
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消
还有疑问? 马上咨询32382位在线律师,3分钟快速解答
立即免费咨询律师

辅 助

模 式