1. 题目描述
牛客网OJ链接
KiKi想获得某年某月有多少天,请帮他编程实现。输入年份和月份,计算这一年这个月有多少天。
输入描述:
多组输入,一行有两个整数,分别表示年份和月份,用空格分隔。
输出描述:
针对每组输入,输出为一行,一个整数,表示这一年这个月有多少天。
示例1
输入 2008 2
输出 29
2.思路
思路:首先分类,分开31天和30天在加一个特殊的2月, 2月 需要判断是否是闰年,如果是闰年2月份会是29天
3. 代码实现1
//KiKi想获得某年某月有多少天,请帮他编程实现。输入年份和月份,计算这一年这个月有多少天。
//输入描述:多组输入,一行有两个整数,分别表示年份和月份,用空格分隔。
//输出描述:针对每组输入,输出为一行,一个整数,表示这一年这个月有多少天。
#include <stdio.h>
#define BIG_MOUTH 31
#define SMALL_MOUTH 30
int isLeapYear(int a) {
if (a % 4 == 0 && a % 100 != 0 || (a % 400 == 0))
return 1;
return 0;
}
int main()
{
int year = 0;
int mounth = 0;
while (scanf("%d %d", &year, &mounth) != EOF)
{
if (mounth == 2)
{
if (isLeapYear(year))
{
printf("%d\n",29);
}
else
{
printf("%d\n", 28);
}
}
else if (mounth == 1 || mounth == 3 || mounth == 5 || mounth == 7
|| mounth == 8 || mounth == 10 || mounth == 12)
{
printf("%d\n", BIG_MOUTH);
}
else
{
printf("%d\n", SMALL_MOUTH);
}
}
return 0;
}

4 代码实现2
考虑用数组,把所有月份放进去数组中,
#include <stdio.h>
int isLeapYear(int a) {
if (a % 4 == 0 && a % 100 != 0 || (a % 400 == 0))
return 1;
return 0;
}
int main()
{
int year = 0;
int mounth = 0;
int days[] = {0, 31,28,31,30,31,30,31,31,30,31,30,31 };
//专门给前面放了一个0 , 后面直接days[1]就对应1月 days[12]就对应12月。
while (scanf("%d %d", &year, &mounth) != EOF)
{
int day = days[mounth];
if (isLeapYear(year))
{
if (mounth == 2)
day += 1;
}
printf("%d\n", day);
}
}

6017

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



