C语言:计算同一年内两个日期的相隔天数

该代码示例展示了如何使用C语言计算同年内的两个日期之间的相隔天数。通过输入开始日期和结束日期,程序会根据月份天数判断并计算出相差的总天数。例如,从2022年10月24日到2022年12月30日,相隔67天。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言:计算同一年内两个日期的相隔天数

代码思路:
1.不同月 :总天数 = 开始月剩余天数+间隔月天数+截至日
2.相同月:总天数 = 截至日-开始日

代码编写:

#include<stdio.h>
int main()
{
	int y1,y2,m1,m2,d1,d2,l,m,n,o,a = 0,day;
	
	printf("请输入开始日期:\n"); 
    scanf("%d%d%d",&y1,&m1,&d1);
	printf("请输入截至日期:\n");
	scanf("%d%d%d",&y2,&m2,&d2);
	
	//月份天数判定 
	
    if(m1==1||m1==3||m1==5||m1==7||m1==8||m1==10||m1==12)  m = 31;
    else if(m1==4||m1==6||m1==9||m1==11) m = 30;
    else if(y1%4==0&&y1%100!=0||y1%400==0) m = 29;
	else m = 28;
	
    l = m2-m1-1;
    //不同月天数计算
    if(l>=0)
  {
    for(l;l>0;l--)
    {
	o = m1+l;
	if(o==1||o==3||o==5||o==7||o==8||o==10||o==12)  n = 31;
	else n = 30;
	a = a+n;		   //间隔月天数计算
	}
    day = m-d1 + a+d2; //总天数计算 
    printf("距离截止日期剩余%d天\n",day);
  }
  //相同月天数计算
  else 
  { day = d2-d1;
  printf("距离截止日期剩余%d天\n",day);
  }
	return 0;
} 

结果:

请输入开始日期:
2022
10
24
请输入截至日期:
2022
12
30
距离截止日期剩余67天


Process exited normally.
Press any key to continue . . .
好的,这是一个比较经典的日期操作问题,我可以为您提供一个大致的 C 语言实现方案,如下所示: ```c #include <stdio.h> // 判断是否为闰 int isLeapYear(int year) { return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0); } // 获取某某月的天数 int getDaysOfMonth(int year, int month) { int days = 30; switch (month) { case 1: days = 31; break; case 2: days = isLeapYear(year) ? 29 : 28; break; case 3: days = 31; break; case 4: days = 30; break; case 5: days = 31; break; case 6: days = 30; break; case 7: days = 31; break; case 8: days = 31; break; case 9: days = 30; break; case 10: days = 31; break; case 11: days = 30; break; case 12: days = 31; break; } return days; } // 计算两个日期之间相隔天数 int getDaysBetweenDates(int year1, int month1, int day1, int year2, int month2, int day2) { int days = 0; // 计算两个日期之间份差 int yearDiff = year2 - year1; // 先计算天数 days += yearDiff * 365; for (int i = year1; i < year2; i++) { if (isLeapYear(i)) { days++; } } // 再加上不足一天数 int days1 = getDaysOfMonth(year1, month1) - day1; for (int i = month1 + 1; i <= 12; i++) { days1 += getDaysOfMonth(year1, i); } days1 += day2; for (int i = 1; i < month2; i++) { days1 += getDaysOfMonth(year2, i); } days += days1; return days; } int main() { int year1, month1, day1, year2, month2, day2; printf("请输入第一个日期(格式:):"); scanf("%d %d %d", &year1, &month1, &day1); printf("请输入第二个日期(格式:):"); scanf("%d %d %d", &year2, &month2, &day2); int days = getDaysBetweenDates(year1, month1, day1, year2, month2, day2); printf("两个日期之间相隔 %d 天。\n", days); return 0; } ``` 这个程序大致思路是先计算两个日期之间的整天数,再加上不足一天数,具体实现过程中需要考虑闰的情况以及每个月的天数。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值