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

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

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语言计算两个日期相隔天数的代码,来自引用[2]: ```c #include<stdio.h> int main() { int n; scanf("%d", &n); while(n--) { int year; int month1, month2, day1, day2; scanf("%d-%d-%d", &year, &month1, &day1); scanf("%d-%d-%d", &year, &month2, &day2); if(month1 == month2) printf("%d\n", day2 - day1 + 1); else { int sum1 = 0; switch(month1 - 1) { case 11: sum1 += 30; case 10: sum1 += 31; case 9: sum1 += 30; case 8: sum1 += 31; case 7: sum1 += 31; case 6: sum1 += 30; case 5: sum1 += 31; case 4: sum1 += 30; case 3: sum1 += 31; case 2: if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) sum1 += 29; else sum1 += 28; case 1: sum1 += 31; } sum1 += day1; int sum2 = 0; switch(month2 - 1) { case 11: sum2 += 30; case 10: sum2 += 31; case 9: sum2 += 30; case 8: sum2 += 31; case 7: sum2 += 31; case 6: sum2 += 30; case 5: sum2 += 31; case 4: sum2 += 30; case 3: sum2 += 31; case 2: if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) sum2 += 29; else sum2 += 28; case 1: sum2 += 31; } sum2 += day2; printf("%d\n", sum2 - sum1 + 1); } } return 0; } ``` ### 代码解析 1. **输入部分**: - 首先通过`scanf("%d", &n);`读取一个整数`n`,它代表要计算日期对的数量。 - 接着使用`while(n--)`循环,对每一对日期进行处理。 - 在循环内部,使用`scanf("%d-%d-%d", &year, &month1, &day1);`和`scanf("%d-%d-%d", &year, &month2, &day2);`分别读取两个日期、月、日信息,这假设两个日期同一。 2. **日期计算部分**: - **同月情况**:如果`month1`等于`month2`,说明两个日期同一个月,直接用`day2 - day1 + 1`计算相隔天数并输出。 - **不同月情况**: - 对于第一个日期,使用`switch`语句计算从当1月1日到该日期的总天数`sum1`。从`month1 - 1`开始,根据不同月份累加天数,对于2月,会根据是否为闰(`year % 4 == 0 && year % 100 != 0 || year % 400 == 0`)来决定是28天还是29天。最后加上该日期的`day1`。 - 对于第二个日期,同样使用`switch`语句计算从当1月1日到该日期的总天数`sum2`。 - 最后用`sum2 - sum1 + 1`计算两个日期相隔天数并输出。 3. **输出部分**: - 通过`printf("%d\n", ...);`输出计算得到的相隔天数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值