利用结构体计算两个日期之间相差的天数

秒速五厘米 2023-02-16 12:05 84阅读 0赞

【问题描述】
结构
struct Date {
int year;
int month;
int day;
};
利用该结构编写一个程序用来计算两个日期之间相差的天数。

【输入形式】
输入两个日期,每个日期分占一行,在一行中日期的年、月、日是三个整数,以空格分隔。并假设第二个日期大于或等于第一个日期。
【输出形式】
第二个日期与第一个日期间相差的天数。
【输入样例】
2003 3 25
2003 3 29
【输出样例】
4

  1. #include<stdio.h>
  2. #include"math.h"
  3. #include"string.h"
  4. struct Date
  5. {
  6. int year;
  7. int month;
  8. int day;
  9. };
  10. int main()
  11. {
  12. struct Date p1,p2;
  13. scanf("%d%d%d",&p1.year,&p1.month,&p1.day);
  14. scanf("%d%d%d",&p2.year,&p2.month,&p2.day);
  15. int a[12]={ 31,28,31,30,31,30,31,31,30,31,30,31};
  16. int cha;
  17. //分两种情况,两个日期是同一年和不是同一年
  18. if(p1.year!=p2.year)
  19. {
  20. int y;
  21. y=p2.year-p1.year;
  22. cha=(y)*365;
  23. int i;
  24. for(i=p1.year;i<p2.year;i++)
  25. {
  26. if((i%4==0&&i%100!=0)||i%400==0)
  27. {
  28. cha=cha+1;//闰年天数多一天
  29. }
  30. }
  31. int sum1,sum2;//分别求出两个日前是当年的第几天
  32. sum1=p1.day;sum2=p2.day;
  33. for(i=0;i<p1.month-1;i++)
  34. sum1+=a[i];
  35. if(((p1.year%4==0&&p1.year%100!=0)||p1.year%400==0)&&p1.month>2)
  36. sum1=sum1+1;
  37. for(i=0;i<p2.month-1;i++)
  38. sum2+=a[i];
  39. if(((p2.year%4==0&&p2.year%100!=0)||p2.year%400==0)&&p2.month>2)
  40. sum2=sum2+1;
  41. cha=cha-sum1+sum2;
  42. }
  43. else
  44. {
  45. int sum1,sum2,i;
  46. sum1=p1.day;sum2=p2.day;
  47. for(i=0;i<p1.month-1;i++)
  48. sum1+=a[i];
  49. if(((p1.year%4==0&&p1.year%100!=0)||p1.year%400==0)&&p1.month>2)
  50. sum1=sum1+1;
  51. for(i=0;i<p2.month-1;i++)
  52. sum2+=a[i];
  53. if(((p2.year%4==0&&p2.year%100!=0)||p2.year%400==0)&&p2.month>2)
  54. sum2=sum2+1;
  55. cha=sum2-sum1;
  56. }
  57. printf("%d",cha);
  58. return 0;
  59. }

发表评论

表情:
评论列表 (有 0 条评论,84人围观)

还没有评论,来说两句吧...

相关阅读

    相关 计算日期天数

    两个日期的天数差,解决这类问题的统一思想是:把原区间问题统一到确定区间上去,如本问题中将特定问题统一到与一个原点时间(0000年01月01日)的天数差,将两个日期与原点的日期天