问题链接:CCF NOI1016 计算天数。
时间限制: 1000 ms 空间限制: 262144 KB
题目描述
输入年份与月份,求该月共有多少天。
输入
输入两个空格隔开的正整数year和month,分别表示年份和月份。
输出
输出对应year这一年month这个月的天数。
样例输入
2000 2
样例输出
29
数据范围限制
1000<=year<=3000,1<=month<=12
问题分析
计算某月有多少天,如果问的是2月则需要知道该年是否为润年。其他则都是常识。
程序说明
程序中,把常年的每月天数放到数组中,便于计算。
编写了一个判定润年返回天数的函数leapyear(),是必要的。
- 查表法是一种值得推荐的方法,简化了程序逻辑,优点多多。
- 一种功能,通常将其封装到函数中,以便复用。
100分通过的C语言程序:
#include <stdio.h>
int days[]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 闰年计算函数
int leapyear(int year) {
return ((year%4 == 0 && year%100 != 0) || year%400 == 0) ? 1 : 0;
}
int main(void)
{
int year, month;
scanf("%d%d", &year, &month);
days[1] += leapyear(year);
printf("%d\n", days[month - 1]);
return 0;
}