目录
解析
问题
输入某年某月某日,输出该日是这一年的第多少天。
代码
#include<stdio.h>
int main()
{
int day, month, year, s = 0;
printf("请输入年月日并用逗号隔开\n");
scanf("%d,%d,%d", &year, &month, &day);
switch (month) {
case 12:s += 30;
case 11:s += 31;
case 10:s += 30;
case 9:s += 31;
case 8:s += 31;
case 7:s += 30;
case 6:s += 31;
case 5:s += 30;
case 4:s += 31;
case 3:s += 28;
case 2:s += 31;
case 1:s += day;break;
}
if (((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) && (month > 2)) //判断是不是闰年
s++;
printf("这一天是这一年的第%d天", s);
return 0;
}
运行结果是:
请输入年月日并用逗号隔开
2022,10,19
这一天是这一年的第292天
--------------------------------
Process exited after 12.34 seconds with return value 0
请按任意键继续. . .
解析
该题首先需要判断输入的年份是平年还是闰年,可根据闰年的判断依据即是否能被4整除且不能被100整除或者能被400整除,代码表示为:
(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
想要判断一天是一年当中的第几天,就需要把当月之前的月份天数都加起来,然后加上当月的号数由于switch语句是从上往下依次运行,因此第一个case从12开始并依次递减到1会使程序简便。(case1开始递增也可以不过较复杂)switch运行代码表示为:
switch (month) {
case 12:s += 30;
case 11:s += 31;
case 10:s += 30;
case 9:s += 31;
case 8:s += 31;
case 7:s += 30;
case 6:s += 31;
case 5:s += 30;
case 4:s += 31;
case 3:s += 28;
case 2:s += 31;
case 1:s += day;break;
}
第一次写博客,如有错误欢迎指出
该博客介绍了如何使用switch语句来解决一个编程问题:根据输入的年月日,计算出该日是当年的第几天。作者提供了代码实现,并解释了如何判断闰年以及利用switch语句简化计算过程。
664

被折叠的 条评论
为什么被折叠?



