计算两个已知日期之间所相隔的天数?
计算两个已知日期之间所相隔的天数?(入门C语言)
列如 1998 11 28 —— 2019 11 28 所得的天数
如图:
在这里说明一下:其实每个输入的 年 月 日,都可以用 for 循环替代的
喜欢精益求精的朋友可以尝试一下
小弟不才,新人刚入道,如果代码有任何错误与不合理之处欢迎各位 指正和批评! 感谢!
#include <stdio.h>
int Days(int year,int month,int day) {
int sum,leap;
switch(month) {
case 1: sum=0;
break;
case 2: sum=31;
break;
case 3: sum=59;
break;
case 4: sum=90;
break;
case 5: sum=120;
break;
case 6: sum=151;
break;
case 7: sum=181;
break;
case 8: sum=212;
break;
case 9: sum=243;
break;
case 10: sum=273;
break;
case 11: sum=304;
break;
case 12: sum=334;
break;
default:printf("月份的输入有误!\n");
}
sum+=day;
if(year%400==0 || (year%4==0 && year%100!=0)){
leap=1;
}
else {
leap=0;
}
if(leap==1 && month>2) {
sum++;
}
return sum;
}
int Oneyear_days(int n) { //计算一年中的总天数
int totle_days;
if(n%400==0 || (n%4==0 && n%100!=0)) {
totle_days=366;
}
else {
totle_days=365;
}
return totle_days;
}
int Eveyears_days(int year1,int year2) { //计算 两个年份中间相隔所有年份的天数
int i,sum,totle_sum=0;
for(i=year1+1;i<year2;i++) {
if(i%400==0 || (i%4==0 && i%100!=0)) {
sum=366;
}
else
sum=365;
totle_sum += sum;
}
return totle_sum;
}
int main() {
int year1,month1,day1,year2,month2,day2,totle;
printf("请输入所求两个日期的 年 月 日\n");
scanf("%d %d %d %d %d %d",&year1,&month1,&day1,&year2,&month2,&day2);
if(month1<1 || month1>12 || month2<1 || month2>12){
printf("月份输入错误!\n");
return 1;
}
if(day1>31 || day1<1 || day2>31 || day2<1){
printf("天数输入有误\n");
return 1;
}
printf(" 所求的为 %d年%d月%d日 - %d年%d月%d日 之间的天数\n",year1,month1,day1,year2,month2,day2);
getchar();
if(year1==year2){ //年份相等时候
totle=Days(year2,month2,day2)-Days(year1,month1,day1);
}
else //年份不相等时候
totle=Oneyear_days(year1)-Days(year1,month1,day1)+Days(year2,month2,day2)+Eveyears_days(year1,year2);
printf("\n %d年%d月%d日 - %d年%d月%d日 之间共有%d天 \n",year1,month1,day1,year2,month2,day2,totle);
return 0;
}
版权声明:本文为Jony_waming原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。