判断一天是这一年的第几天的代码进阶版(保证是你见过的最新颖的思维)(C语言实现)

判断一天是这一年的第几天的代码进阶版(保证是你见过的最新颖的思维)(C语言实现),第1张

判断一天是这一天的第几天:

1.将这个月之前的月数所包含的天和这个月的天数加起来

举个例子2022年3月18号就是将2022年的前两个月(一月和二月总共包含的天数加起来再加上三月的18天即可)

2.怎么求之前的月数所包含的天数和:

众所周知,1,3,5,7,8,10,12月都为31天

除过二月其余的月都是30天

3.解决特殊月份--二月

判断这一年是闰年还是平年(可用三目运算符)

话不多说:上才()艺(

#include
//判断一天是这一年的第几天 利用模块化编程和选择结构的融合
int is_leap_year(int year)
{
	int num = 1;
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
		num = 1;
	else
		num = 0;
	return num;


}
int my_month(int year, int month)
{
	int num = 0;
	switch (month)//switch的进阶应用
	{
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:num = 31; break;
	case 2:num=is_leap_year(year)?29:28; break;//需判断是否是闰年  故调用函数判断 实现模块化编程
		//亮点:利用三目运算符进行判断
	default:num = 30; break;
	}
	return num;
}
int my_day(int year, int  month, int day)//统计天数 每月的天数不一样 所以将再次调用函数
{
	int count = 0;//再次调用函数判断闰年与否和月数的天数
	int i = 0;
	for (i = 1; i < month; i++)//当月数和i相同是就进不去 即这一个月的天数由day控制
	{
		count = count+my_month(year, i);//调用函数统计月的天数
	}
	count += day;
	return count;
}
int main()
{
	int year, month, day;
	scanf("%d年%d月%d日", &year, &month, &day);
	int _day = my_day(year, month, day);
	printf("%d年%d月%d日是这一年的第%d天",year,month,day, _day);
	return 0;
} 

亮点:体现了结构化编程,用switch语句将代码进行优化,用三目运算符将二月的判断简化到极致

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/872970.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存