【C语言】分享计算一个日期是该年第几天的巧妙方法

一.要求

       输入年月日,计算出这一天是本年第几天,例如:输入:1982 3 4,输出:63

       这是一个大部分C语言初学者都会遇到的问题,实现起来很容易,同时解决方法也有很多,以下分享博主想到的巧妙的方法

二.思路

       计算 a 年 b 月 c 日是该年的第几天,可以将 b 月之前的所有月份日期加上 c ,即可得出天数,可以用switch()来实现。                                                                                                                      而switch()有一个特点,case决定入口,break决定出口,当没有break的时候,程序会从入口开始,按顺序将后面所有case中的语句执行,直到遇到break或者全部执行结束, 那么可以利用这一特点,将月份倒序排放,加入计算12月11日,那么从case 12进入,不加break,按顺序执行case 1~case 12,将1~11月份的天数加起来,最后打印输出的时候,将1~11的天数和12月11日中的11日相加,即可得出结果。

—————————希望这个方法能为你解决这个问题打开一个新的思路!——————————

—————————你的点赞、收藏、评论和关注是对博主最大的支持!(*^▽^*)————————

#define _CRT_SECURE_NO_WARNINGS 0
#include<stdio.h>
int main()
{
	int year = 0, month = 0, day = 0; //年月日
	int days = 0;//第几天
	scanf("%d %d %d", &year, &month, &day);

	//case 决定入口,break 决定出口,如果没有break,会按顺序执行入口开始每条case后的语句,直到遇到break
	//计算a月b日在本年的第几天,可以用a-1个月所有的天数之和,加上b日
	//结合switch语句的特性,实现以下代码
	switch (month)
	{
	case 12:
		days += 30; //下面case中存放的是 month-1 月的天数
	case 11:
		days += 31; 
	case 10:
		days += 30;
	case 9:
		days += 31;
	case 8:
		days += 31;
	case 7:
		days += 30;
	case 6:
		days += 31;
	case 5:
		days += 30;
	case 4:
		days += 31;
	case 3:
	{   if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))//闰年2月29天
		   days += 29;
	    else  //平年2月28天
		   days += 28;
	}
	case 2:
		days += 31;
	case 1:
		days += 0;
    default:
        printf("输入错误!");
	}
	printf("%d", days + day);
	return 0;
}

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值