思路二:用数组存储各月的日期
总体思路:
(一).
写一个函数 get_days_of_month 返回对应月份天数:
定义天数变量:
int d = 0; -- 天数
定义一个数组,存放 一年12个月的天数:
int days[ ] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
下标0的元素随便放一个数,让1月下标为1,2月下标为2,以此类推
让传进来的月份对应数组中的该月份下标
d = days[m];
数组中的二月是28天,是平年的,
判断 int y 是不是闰年,m 是不是二月,
是则 d += 1; 即 29 天
返回天数 d
(二).
主函数 和 思路一 一样
第一步:
写一个函数 get_days_of_month 返回对应月份天数:
(1).
定义天数变量:
int d = 0; -- 天数
(2).
定义一个数组,存放 一年12个月的天数:
int days[ ] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
下标0的元素随便放一个数,让1月下标为1,2月下标为2,以此类推
(3).
让传进来的月份对应数组中的该月份下标
d = days[m];
(4).
数组中的二月是28天,是平年的,
判断 int y 是不是闰年,m 是不是二月,
是则 d += 1; 即 29 天
(5).
返回天数 d
实现代码:
#include <stdio.h> //写一个函数 get_days_of_month 返回对应月份天数: int get_days_of_month(int y, int m) { //定义天数变量: int d = 0; //定义一个数组(平年),存放一年12个月的天数: int days[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; // 下标(月份) 0 1 2 3 4 5 6 7 8 9 10 11 12 //让传进来的月份对应数组中的该年份下标: d = days[m]; //判断是不是闰年的二月: if (((y%4==0 && y%100!=0) || (y%400==0)) && m==2) //如果是 闰年,并且是 二月 { d += 1; //在数组中平年二月28天的基础上+1变成29天 } //返回天数: return d; } int main() { return 0; }
实现图片:
第二步:
主函数 和 思路一 一样
实现代码:
#include <stdio.h> //写一个函数 get_days_of_month 返回对应月份天数: int get_days_of_month(int y, int m) { //定义天数变量: int d = 0; //定义一个数组(平年),存放一年12个月的天数: int days[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; // 下标(月份) 0 1 2 3 4 5 6 7 8 9 10 11 12 //让传进来的月份对应数组中的该年份下标: d = days[m]; //判断是不是闰年的二月: if (((y%4==0 && y%100!=0) || (y%400==0)) && m==2) //如果是 闰年,并且是 二月 { d += 1; //在数组中平年二月28天的基础上+1变成29天 } //返回天数: return d; } int main() { //定义变量: int y = 0; //年 int m = 0; //月 //使用while循环,进行多组输入: while (scanf("%d %d", &y, &m) == 2) //输入了 年 和 月 两个变量后就进行获取天数 { //调用函数 get_days_of_month 并获取返回天数: int d = get_days_of_month(y, m); //获取天数后,进行打印: printf("%d\n", d); } return 0; }
实现图片:
思路二:最终代码和实现效果
最终代码:
#include <stdio.h> //写一个函数 get_days_of_month 返回对应月份天数: int get_days_of_month(int y, int m) { //定义天数变量: int d = 0; //定义一个数组(平年),存放一年12个月的天数: int days[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; // 下标(月份) 0 1 2 3 4 5 6 7 8 9 10 11 12 //让传进来的月份对应数组中的该年份下标: d = days[m]; //判断是不是闰年的二月: if (((y%4==0 && y%100!=0) || (y%400==0)) && m==2) //如果是 闰年,并且是 二月 { d += 1; //在数组中平年二月28天的基础上+1变成29天 } //返回天数: return d; } int main() { //定义变量: int y = 0; //年 int m = 0; //月 //使用while循环,进行多组输入: while (scanf("%d %d", &y, &m) == 2) //输入了 年 和 月 两个变量后就进行获取天数 { //调用函数 get_days_of_month 并获取返回天数: int d = get_days_of_month(y, m); //获取天数后,进行打印: printf("%d\n", d); } return 0; }
实现效果: