| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1681 人关注过本帖
标题:计算两个日期差值的程序
只看楼主 加入收藏
罗将神
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2004-7-3
收藏
 问题点数:0 回复次数:3 
计算两个日期差值的程序

这道题小弟确实做不出来,请教高手一下!!

计算两个日期差值的程序

2004-07-06 09:43
guanyou
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2004-6-14
收藏
得分:0 

以下程序是我刚学完结构时写的,给你参考一下!

#include<iostream.h> struct data { int year,months,day; }; int leap_year(struct data *); int data_year(struct data *); int days_of_months(struct data*,int); int days_of_year(struct data *); int data_year(struct data *pd) { int days=0; for(int i=0;i<=(pd->months-1);i++) { days+=days_of_months(pd,i); } days+=pd->day; return days; } int days_of_year(struct data *pd) { if(leap_year(pd)==1) return 366; else return 365; } int days_of_months(struct data *pd,int p) { int days[12]={0,31,28,31,30,31,30,31,31,30,31,30}; if(leap_year(pd)==1&&p==2) return 29; else return days[p]; } int leap_year(struct data *pd) { int flag=0; if(((pd->year%4==0)&&(pd->year%100!=0))||pd->year%400==0) flag=1; return flag; } void main() { int a(0); while(a!=1) { struct data data1,data2; int days,years=0; cout<<"请输入开始日期 : "<<'\n'<<"年 :"; cin>>data1.year; cout<<"月 :"; cin>>data1.months; cout<<"日 :"; cin>>data1.day; cout<<'\n'<<"请输入结束日期 : "<<endl; cout<<"年 :"; cin>>data2.year; cout<<"月 :"; cin>>data2.months; cout<<"日 :"; cin>>data2.day; cout<<endl; if((data2.year-data1.year)==0) days=data_year(&data2)-data_year(&data1); else { days=data_year(&data2)+days_of_year(&data1)-data_year(&data1); int j=data2.year-data1.year-1; for(int i=1;i<=j;i++) { data1.year+=1; if(leap_year(&data1)==1) years+=366; else years+=365; } data1.year-=j; days+=years; } cout<<"从 "<<data1.year<<" 年 "<<data1.months<<" 月 "<<data1.day<<" 日到 "<<data2.year <<" 年 "<<data2.months<<" 月 "<<data2.day<<" 日相隔 "<<days<<" 天 "<<endl; cout<<'\n'<<"要继续使用软件请输入: 0 ."<<'\n'<<"要退出应用程序请输入: 1 ."<<endl; cout<<"请选择操作 : "; cin>>a; cout<<endl; } }

[此贴子已经被作者于2004-07-08 11:29:04编辑过]


2004-07-07 17:02
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 


#include<stdio.h>
int IsLeap(int year)
{
if(year%4==0&&year%100!=0||year%400==0)
return(1);
return(0);
}
int main()
{
int year1,month1,day1,year2,month2,day2;
long n=0;
printf("输入起始年份:");
scanf("%d%d%d",&year1,&month1,&day1);
printf("输入结束年份:");
scanf("%d%d%d",&year2,&month2,&day2);

while(year1<year2)
{
if(IsLeap(year1)==1)
{
n=n+366;
}
else
{
n=n+365;
}
year1++;
}
while(month1<month2)
{
switch(month1)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:n=n+31;break;
case 4:
case 6:
case 9:
case 11:n=n+30;break;
case 2:
{
if(IsLeap(year1)==1)
{
n=n+29;
}
else
{
n=n+28;
}
break;
}
}
month1++;
}
n=n+day2-day1;
printf("%ld\n",n);
return(0);
}


倚天照海花无数,流水高山心自知。
2006-08-11 20:48
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
可以在前面判断年份的先后,并且起始为小,结束为大.
也可以用结构体来存储,成员为,年,月,日.

倚天照海花无数,流水高山心自知。
2006-08-11 20:50
快速回复:计算两个日期差值的程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034185 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved