
判断一天是这一天的第几天:
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语句将代码进行优化,用三目运算符将二月的判断简化到极致
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)