概述
目录
问题
代码
解析
问题
输入某年某月某日,输出该日是这一年的第多少天。
代码
#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语句应用例题目录问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复