C语言计算时间间隔.docx
- 文档编号:25742449
- 上传时间:2023-06-12
- 格式:DOCX
- 页数:13
- 大小:17.30KB
C语言计算时间间隔.docx
《C语言计算时间间隔.docx》由会员分享,可在线阅读,更多相关《C语言计算时间间隔.docx(13页珍藏版)》请在冰豆网上搜索。
C语言计算时间间隔
C语言计算时间间隔
浏览次数:
727次悬赏分:
50|解决时间:
2010-6-1716:
40|提问者:
林晓昇
已知当前时间,格式如
currTime[6]={2010,02,28,23,59,59}
表示2010年2月28日23点59分59秒
求:
1:
相隔a年b月c天d点e分f秒后的时间
放在nextTime[6]数组中
2:
与A年B月C天D点E分F秒相隔多长时间
放在dataTime[6]数组中
需考虑闰年等因素;
不使用time.h中的库函数
合理再加分:
)
最佳答案
没有现成答案,只能给你几个作为参考的
/*C语言对指定日期计算出N天后是什么日期*/
#include
main()
{
intyear,month,day;
intleapyear=0;//闰年时使用
intdaytime=0;
intsum;
staticintmonth_date[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("请输入日期:
(例如:
2010527)");
scanf("%d%d%d",&year,&month,&day);
if(year<=0||month>12||month<1)//判断输入是否正确
{
printf("Error!
\n");
getch();
exit(0);
}
if(year%400==0||(year%4==0&&year%100!
=0))//判断是否为闰年
leapyear=1;//是就加1
if(month==2)//判断日是否输入正确,2月是特殊的因为分闰年和平年
{if((month_date[month-1]+leapyear) { printf("Error! \n"); getch(); exit(0); } } if(month! =2)//当输入不是2月时,判断输入 { if(month_date[month-1] { printf("Error! \n"); getch(); exit(0); } } printf("\n请输入天数: "); scanf("%d",&daytime);//输入第N天后 if(daytime<0) { printf("Error! \n"); getch(); exit(0); } sum=daytime+day;//当前日期与N天相加 do { if(month==2)//判断当月是不是二月份 month_date[month-1]+=leapyear; if(sum>month_date[month-1]) { sum-=month_date[month-1]; month++;//超过当月天数,加一个月 if(month==13)//当月份超过12月时,重新返到1月 { year++;//加一年 if(year%400==0||(year%4==0&&year%100! =0))//判断加一年后是不是闰年 leapyear=1; else leapyear=0;//不是闰年则为0 month=1;//因为12月的下一个月是1月 } } }while(sum>month_date[month-1]);//当加起来的天数少于当月的天数就停止循环 day=sum; printf("\n第%d天后是%d%d%d",daytime,year,month,day);//输出 getch(); } //输入年份和该年中的第几天,计算并输出该天的日期 Main() { intyear,day,d,m,leap; intMonth[12]={31,28,31,30,31,30,31,31,30,31,30,31}; printf("Inputtheyearandday: \n"); scanf("%d",&year); scanf("%d",&day); if((year%4! =0)||((year%100==0)&&(year%400! =0)))leap=0;//不是闰年 elseleap=1;//是闰年 If(leap==1)month[1]=29;//闰年二月29天 m=1; for(inti=0;i<12;i++) { d=day-month[i]; if(d>0){ day=d; m++;//月数加1 } elsebreak; } printf("Thedateis: %d年%d月%d日",year,m,d); } 我给你写的不仅能显示年龄而且能显示距现在的天数。 当前日期无需输入,程序自动调取系统日期。 。 运行过了没有任何问题。 有什么问题可以交流下。 #include #include //计算给定的日期是本年的第几天 intcount(intyear,intmonth,intday) {inti,sum=0,flag=0; inta[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; for(i=1;i sum=a[i]+sum; if(year%400==0||year%100! =0&&year%4==0) flag=1; if(flag==1&&month>2)sum++; sum=sum+day; returnsum; } intmain() { intyear,month,day; time_tt; structtm*local; intsum=0,i; t=time(NULL); local=localtime(&t); printf("今天的日期: %d年%d月%d日\n",local->tm_year+1900,local->tm_mon+1,local->tm_mday); printf("输入生日: "); scanf("%d%d%d",&year,&month,&day); for(i=year+1;i { if(i%400==0||i%100! =0&&i%4==0) sum+=366; elsesum+=365; } if((year%400==0||year%100! =0&&year%4==0)) sum+=366-count(year,month,day); elsesum+=365-count(year,month,day); sum+=count(local->tm_year+1900,local->tm_mon+1,local->tm_mday); printf("%d年%d月%d日距今天有%d天\n",year,month,day,sum); printf("\n你的年龄为%d\n",local->tm_year+1900-year); } c编程高手团队正在招新,有意者速速行动,一起学习,一起努力! #include typedefstruct{ intyear,month,day; }Date; main() { intage; Datetoday,birthday; printf("Intputbirthday: \nYear: "); scanf("%d",&birthday.year); printf("Month: "); scanf("%d",&birthday.month); printf("Day: "); scanf("%d",&birthday.day); printf("Intputdateoftoday: \nYear: "); scanf("%d",&today.year); printf("Month: "); scanf("%d",&today.month); printf("Day: "); scanf("%d",&today.day); if(today.month>=birthday.month) age=today.year-birthday.year+1; else age=today.year-birthday.year; printf("Yourageis: %d\n",age); return0; } C语言: 时间间隔的计算 2007-08-1222: 16: 02|分类: 成就IT事业|标签: 无|字号 #include main() { inttime,btime[2],etime[2],k1,k2; printf("pleaseinputbegintime: \n"); scanf("%d: %d",&btime[0],&btime[1]); printf("pleaseinputendtime: \n"); scanf("%d: %d",&etime[0],&etime[1]); if(btime[0] { if(btime[1]<=etime[1])/*16: 00->17: 05*/ { k1=etime[0]-btime[0]; k2=etime[1]-btime[1]; time=k1*60+k2; } else/*16: 09->17: 05*/ { etime[0]--; etime[1]+=60; k1=etime[0]-btime[0]; k2=etime[1]-btime[1]; time=k1*60+k2; } } else if(btime[0]==etime[0]) { if(btime[1]<=etime[1])/*16: 05->16: 35*/ { time=etime[1]-btime[1]; } else/*16: 35->16: 05*/ { k1=etime[1]+60-btime[1]; time=23*60+k1; } } else/*16: 35->14: 42*/ { if(etime[1]>=btime[1]) { k1=btime[0]-etime[0]; k2=btime[1]-etime[1]; time=(23-k1)*60+(60-k2); } else/*16: 33->14: 22*/ { btime[0]--; btime[1]+=60; k1=btime[0]-etime[0]; k2=btime[1]-etime[1]; time=(23-k1)*60+60-k2; } } printf("time=%d\n",time); k1=time/60; k2=time%60; printf("time=%dhours,%dminutes.\n",k1,k2); } 计算两个日期的时间间隔C语言程序设计 2010-10-0709: 29 #include boolIsLeapYear(intyear)//判断年份是平年还是闰年 { return(year%400==0||(year%4==0&&year%100! =0)); } intGetDaysOfMonth(intyear,intmonth)//获得一年中各个月的天数 { inti=0; switch(month-1) { case11: i+=30; case10: i+=31; case9: i+=30; case8: i+=31; case7: i+=31; case6: i+=30; case5: i+=31; case4: i+=30; case3: i+=31; case2: i=(IsLeapYear(year))? (i+=29): (i+=28); case1: i+=31; } returni; } voidFunctionThree(intbirthYear,intbirthMonth,intbirthDay,intyear,intmonth,intday) { intiResult=0,j; for(j=birthYear;j<=year;j++) { iResult+=((IsLeapYear(j))? 366: 365); } iResult-=GetDaysOfMonth(birthYear,j); for(j=1;j { iResult--; } iResult+=GetDaysOfMonth(year,j); for(j=1;j { iResult++; } printf("\n%d年%d月%d日-%d年%d月%d日=%d天\n",year,month,day,birthYear,birthMonth,birthDay,iResult); } intmain() { charch; intyear,month,day; intbirthYear,birthMonth,birthDay; printf("请输入你的生日(年月日,以空格分隔): "); scanf("%d%d%d",&birthYear,&birthMonth,&day); printf("\n请输入计算日期(年月日,以空格分隔): "); scanf("%d%d%d",&year,&month,&birthDay); FunctionThree(birthYear,birthMonth,birthDay,year,month,day); printf("Anykeytoexit..."); scanf("%c",&ch); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 计算 时间 间隔