判断一天是这一天的第几天:
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语句将代码进行优化,用三目运算符将二月的判断简化到极致



