另外一个问题

2024-11-15 10:43:40
推荐回答(1个)
回答1:

  这个程序可以计算相同年份不同日期的相差天数,如果需要计算不同年份的日期相差天数,可以自己修改一下;
  #include "stdio.h"
  #include "math.h" //为abs()函数提供原型
  void main()
  {
  int i;
  int year,month,day; //三个整型变量用来接收输入的日期 格式为:年-月-日
  int first,end; //first和end变量分别记录输入的第一个日期和第二个日期 是该年的第几天
  int day_of_year(int year,int month,int day); //函数调用声明
  printf("请输入第一个日期,输入格式为:xxxx-xx-xx(年-月-日),‘-’符要求用户自己输入\n");
  while((scanf("%d-%d-%d",&year,&month,&day)!=3)||(month<1||month>12))
  printf("输入错误,请按照xxxx-xx-xx(年-月-日)格式输入,‘-’符要求用户自己输入,月份在1~12之间:\n");
  first=day_of_year(year,month,day);

  printf("请输入第二个日期,输入格式为:xxxx-xx-xx(年-月-日),‘-’符要求用户自己输入\n");
  while((scanf("%d-%d-%d",&year,&month,&day)!=3)||(month<1||month>12))
  printf("输入错误,请按照xxxx-xx-xx(年-月-日)格式输入,‘-’符要求用户自己输入,月份在1~12之间:\n");
  end=day_of_year(year,month,day);

  printf("两个日期之间相差 %d 天\n",abs(end-first));
  }
  int day_of_year(int year,int month,int day) //该函数计算输入的日期是该年的第几天
  {
  int total=0;

  switch(month)
  {
  case 1:total=day;break;
  case 2:total=31+day;break;
  case 3:total=59+day;break;
  case 4:total=90+day;break;
  case 5:total=120+day;break;
  case 6:total=151+day;break;
  case 7:total=181+day;break;
  case 8:total=212+day;break;
  case 9:total=243+day;break;
  case 10:total=273+day;break;
  case 11:total=304+day;break;
  case 12:total=334+day;break;

  }
  return total;
  }