gpt4 book ai didi

C语言小程序 如何判断两个日期之差

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章C语言小程序 如何判断两个日期之差由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1.普通的写法 。

复制代码 代码如下

#include <stdio.h> int leapyear(int year) {  if((year%4==0 && year%100!=0) || year%400==0)   return 1;  else   return 0; } int days(int *day1, int *day2) {  int i=0;  int *tmp;  int diff = 0;  const int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};  if(day1[0] == day2[0])  {   if(day1[1] == day2[1])   {    diff = day1[2] - day2[2];    diff = (diff < 0)?(-diff):diff;   }   else   {    if(day1[1] < day2[1])    //day1=1991-5-8   day2=1991-6-2    {     tmp = day1;      //day1=1991-6-2   day2=1991-5-8     day1 = day2;     day2 = tmp;    }    for(i=day2[1]+1; i<day1[1]; i++)    {     diff +=  month[i];    }    diff += month[day2[1]] - day2[2] + day1[2];    if(day2[1] <= 2 && day1[1] >2)     if(leapyear(day2[0]))      diff++;   }  }  else  {   if(day1[0] < day2[0])   {    tmp = day1;     day1 = day2;    day2 = tmp;   }   for(i=day2[0]+1; i<day1[0]; i++)   {    if(leapyear(i))     diff += 366;    else     diff += 365;   }   for(i=day2[1]+1; i<=12; i++)     //day1=1992-1-1   day2=1991-1-1   {    diff += month[i];   }   diff += (month[day2[1]] - day2[2]);   if(day2[1] <= 2)    if(leapyear(day2[0]))     diff++;   for(i=1; i<day1[1]; i++)   {    diff += month[i];   }   diff += day1[2];   if(day1[1] > 2)    if(leapyear(day1[0]))     diff++;  }  return diff; } int main() {  int day1[3], day2[3];  int day = 0;  printf("输入日期:");  scanf("%d-%d-%d",&day1[0], &day1[1], &day1[2]);  printf("输入另一个日期:");  scanf("%d-%d-%d",&day2[0], &day2[1], &day2[2]);  day = days(day1, day2);  printf("两个日期之间共有%d天。\n",day);  return 0; } 。

2.利用结构体,代码更整洁一些 。

复制代码 代码如下

#include <stdio.h> typedef struct date {  int year;  int month;  int day; }DATE; int leapyear(int year) {  if((year%4==0 && year%100!=0) || year%400==0)   return 1;  else   return 0; } int compare(DATE *d1, DATE *d2)    //如果第一个日期比第二个日期大,交换日期 {  DATE *tmp;  if(d1->year == d2->year)    //年数相等  {   if(d1->month > d2->month)   //月数相等   {    tmp = d1;    d1 = d2;    d2 = d1;   }   else if(d1->month == d2->month)  //日期相等   {    if(d1->day > d2->day)    {     tmp = d1;     d1 = d2;     d2 = d1;    }   }  }  else if(d1->year > d2->year)  {   tmp = d1;   d1 = d2;   d2 = tmp;  }  return 0; } int diff(DATE *date1, DATE *date2) {  int i;  int diff = 0;  const int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};  if(date1->year == date2->year)  {   if(date1->month == date2->month)   {    diff = date2->day - date1->day;   }   else   {    for(i=date1->month+1; i<date2->month; i++)    {     diff += month[i];    }    diff += month[date1->month] - date1->day + date2->day;    if(leapyear(date1->year))     if(date1->month <=2 && date2->month >2)      diff++;   }  }  else  {   for(i=date1->year+1; i<date2->year; i++)   {    if(leapyear(i))     diff += 366;    else     diff += 365;   }   for(i=date1->month+1; i<=12; i++)    //date1距离年末多少天   {    diff += month[i];   }   diff += month[date1->month] - date1->day;   if(date1->month <= 2)    if(leapyear(date1->year))     diff++;   for(i=1; i<date2->month; i++)     //date2距离年初多少天   {    diff += month[i];   }   diff += date2->day;   if(date1->month > 2)    if(leapyear(date2->year))     diff++;  }  return diff; } int main() {  int days = 0;  DATE day1, day2;  DATE *date1, *date2;  date1 = &day1;  date2 = &day2;  printf("输入日期:");  scanf("%d-%d-%d",&(date1->year), &(date1->month), &(date1->day));  printf("输入另一个日期:");  scanf("%d-%d-%d",&date2->year, &date2->month, &date2->day);  compare(date1, date2);  days = diff(date1, date2);  printf("两个日期之间共有%d天。\n",days);  return 0; } 。

最后此篇关于C语言小程序 如何判断两个日期之差的文章就讲到这里了,如果你想了解更多关于C语言小程序 如何判断两个日期之差的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com