定义两个结构体变量,包括年月日,输入两个日期到这两个变量,求这两个日期间隔多少天
3个回答
展开全部
/*说明,我是用c++编的,编译成功了,要不要改成c语言的?还有注释说明,只剩下细节问题,根据你的需要加以修改,我未考虑错误数据的容错性,默认数据合理*/
#include <iostream>
using namespace std;
struct Date{
int year;
int mon;
int day;
};
void main()
{ Date date1,date2,t;
int y,y1,y2;
cin>>date1.year>>date1.mon>>date1.day;
cin>>date2.year>>date2.mon>>date2.day;
if (date1.year>date2.year) {//保证date1的日期小于date的,不知题目有没有保证
t=date1;
date1=date2;
date2=t;
}
int p(int year);
int monday(int m);
int mtime(int y,int m,int d);
int ytime(int d1,int d2);
int mtime_2(int y,int m,int d);
y=ytime(date1.year,date2.year);
y1=mtime(date1.year,date1.mon,date1.day);
y2=mtime_2(date2.year,date2.mon,date2.day);
cout<<y<<endl;//y是相隔整个年的日子数
cout<<y1<<endl;
cout<<y2<<endl;
cout<<y+y1+y2<<endl;//这是总和,也就是答案
}
int ytime(int d1,int d2){//计算相差多少个整年的总的日子数目,考虑到闰年的影响
int p(int year);
int sum=0;
do{
d1=d1+1;
if (p(d1)){sum=sum+366;}
else {sum=sum+365;}
} while (d1<d2-1);
return sum;
}
int p(int year){//判断是否为闰年
int leap;
if((year%4==0&&year%100!=0)||(year%400==0)) leap=1;
else leap=0;
return leap;
}
int mon_day(int y,int m){//判断月份的日子总数,考虑到月份的天数不一致性
int num;
switch (m)
{ case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:num=31;break;
case 4:
case 6:
case 9:
case 11:num=30;break;
case 2:{if (y&&(m=2)) num=29;//考虑到闰年的差异
else num=28;
}break;
}
return num;
}
int mtime(int y,int m,int d){//计算非整年的日子之一,date1的该年到年终的日子数
int sum=0;
sum=mon_day(y,m)-d;
while (m<12){
m=m+1;
sum=sum+mon_day(y,m);}
return sum;
}
int mtime_2(int y,int m,int d){//计算非整年的日子之二,date2的从年初到该日子的日子数目
int sum=0;
sum=d;
while (m>1){
m=m-1;
sum=sum+mon_day(y,m);}
return sum;
}
#include <iostream>
using namespace std;
struct Date{
int year;
int mon;
int day;
};
void main()
{ Date date1,date2,t;
int y,y1,y2;
cin>>date1.year>>date1.mon>>date1.day;
cin>>date2.year>>date2.mon>>date2.day;
if (date1.year>date2.year) {//保证date1的日期小于date的,不知题目有没有保证
t=date1;
date1=date2;
date2=t;
}
int p(int year);
int monday(int m);
int mtime(int y,int m,int d);
int ytime(int d1,int d2);
int mtime_2(int y,int m,int d);
y=ytime(date1.year,date2.year);
y1=mtime(date1.year,date1.mon,date1.day);
y2=mtime_2(date2.year,date2.mon,date2.day);
cout<<y<<endl;//y是相隔整个年的日子数
cout<<y1<<endl;
cout<<y2<<endl;
cout<<y+y1+y2<<endl;//这是总和,也就是答案
}
int ytime(int d1,int d2){//计算相差多少个整年的总的日子数目,考虑到闰年的影响
int p(int year);
int sum=0;
do{
d1=d1+1;
if (p(d1)){sum=sum+366;}
else {sum=sum+365;}
} while (d1<d2-1);
return sum;
}
int p(int year){//判断是否为闰年
int leap;
if((year%4==0&&year%100!=0)||(year%400==0)) leap=1;
else leap=0;
return leap;
}
int mon_day(int y,int m){//判断月份的日子总数,考虑到月份的天数不一致性
int num;
switch (m)
{ case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:num=31;break;
case 4:
case 6:
case 9:
case 11:num=30;break;
case 2:{if (y&&(m=2)) num=29;//考虑到闰年的差异
else num=28;
}break;
}
return num;
}
int mtime(int y,int m,int d){//计算非整年的日子之一,date1的该年到年终的日子数
int sum=0;
sum=mon_day(y,m)-d;
while (m<12){
m=m+1;
sum=sum+mon_day(y,m);}
return sum;
}
int mtime_2(int y,int m,int d){//计算非整年的日子之二,date2的从年初到该日子的日子数目
int sum=0;
sum=d;
while (m>1){
m=m-1;
sum=sum+mon_day(y,m);}
return sum;
}
展开全部
struct date{
int year;
int mon;
int day;
};
写一个转换接口
int chenge_to_days(struct date);返回date是一年中的第几天
然后输入完转换,相减就能得到间隔。这样是不是容易理解.代码还是自己想吧毕竟思想是自己的
int year;
int mon;
int day;
};
写一个转换接口
int chenge_to_days(struct date);返回date是一年中的第几天
然后输入完转换,相减就能得到间隔。这样是不是容易理解.代码还是自己想吧毕竟思想是自己的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
struct date
{
int year;
int month;
int day;
};
问题主要是要知道一个日期是当年的第几天,和两个日期相隔年份的总天数,比如闰年等等,你要自己写一个函数对日期转化成天数,还有计算两个年份间相隔的天数,具体就是if,else或者switch语句了,请自己去完成吧
{
int year;
int month;
int day;
};
问题主要是要知道一个日期是当年的第几天,和两个日期相隔年份的总天数,比如闰年等等,你要自己写一个函数对日期转化成天数,还有计算两个年份间相隔的天数,具体就是if,else或者switch语句了,请自己去完成吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询