目录
前言
C语言练习题---获得月份天数的两种方法,从switch语句与数组两个方面展开叙述。
提示:以下是本篇文章正文内容,下面案例可供参考
一、问题描述
描述:
KiKi想获得某年某月有多少天,请帮他编程实现。输入年份和月份,计算这一年这个月有多少天。
输入描述:
多组输入,一行有两个整数,分别表示年份和月份,用空格分隔。
输出描述:
针对每组输入,输出为一行,一个整数,表示这一年这个月有多少天。
示例1:
输入:
2008 2输出:
29
二、解题思路
每月天数分布情况:
月份 1 2 3 4 5 6 7 8 9 10 11 12 平年 31 28 31 30 31 30 31 31 30 31 30 31 闰年 31 29 31 30 31 30 31 31 30 31 30 31 除平年与闰年的2月分天数不一样其他都一样,可以用switch、数组两种方法来进行解题
三、解法一(switch语句)
使用switch语句,case分1~12。
case 1,3,5,7,8,10,12 天数都为31天;
case 4,6,9,11 天数都为3;
case 2 分平年、闰年两种情况。
代码示例:
int main() { int y = 0; int m = 0; while (scanf("%d%d", &y, &m) == 2) { switch(m) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("%d\n",31); break; case 4: case 6: case 9: case 11: printf("30\n"); break; case 2: { if (((y % 4 == 0) && (y % 100) != 0) || (y % 400) == 0) printf("29\n"); else printf("28\n"); } } } return 0; }
四、解法二(数组)
将12个月份的天数按顺序存放在数组中,为了与数组下标相对应,增加一个元素0。
判断年份为平年还是闰年。
代码示例:
int my_year(int y) { return (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)); } int main() { int y, m; int arr[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; while ((scanf("%d %d", &y, &m)) == 2) { int day = arr[m]; if (my_year(y) && m == 2) { day++; } printf("%d\n", day); } return 0; }
四、运行结果
最后
快乐的时光总是短暂的,以上就是今天要讲的内容,本文介绍了小赵同志在学习C语言中遇到的习题,并表述出其解法及实现。欢迎家人们批评指正。小赵同志继续更新,不断学习的动力是宝子们一键三连的支持呀~