C言語:月の日数を取得する(複数入力)

トピック:

説明

KiKi は特定の年と月の日数を取得したいと考えています。プログラムを手伝ってください。年と月を入力して、この年と月の日数を計算します

           

説明を入力してください:

複数の入力セット。1 行には、年と月をそれぞれ表す2 つの整数スペースで区切られています

             

出力の説明:

入力のセットごとに、出力は 1 行で、この年と月に何日あるかを示す整数が表示されます。

                 

例1

入力:

2008年2月

出力:

29

                    

 ================================================= =======================

                       

アイデア 1: 日付分類に switch ステートメントを使用する

一般的なアイデア:

(一)。

対応する月の日数を返す関数 get_days_of_month を作成します

             

関数パラメータ:

int y --;

int m --;

          

switch ステートメントを使用して月に基づいてその月の日数を返します

m(月)の場合

それは1、3、5、7、8、10、12 か月です。通常の年でも閏年でも、この月は 31 日あり31 日が返されます

これは4、6、9、11 か月です。通常の年であっても閏年であっても、月は 30 日あり30 日を返します

2月の場合は別途判断します

平年であれば28日を返し

うるう年の場合は、 28+1 日つまり 29 日を返します。

         

(二)。

メイン機能:

        

変数を定義します。

int y = 0 ; --年

int m = 0 ; --月

             

複数の入力セットに対してwhile ループを使用します

get_days_of_month 関数を 1 回呼び出して、 1 回入力した後の日数を返します

 返却日数を取得後、印刷します。

                


                 

最初の一歩:

対応する月の日数を返す関数 get_days_of_month を作成します

             

(1)。

関数パラメータ:

int y --;

int m --;

          

(2)。

switch ステートメントを使用して月に基づいてその月の日数を返します

m(月)の場合

それは1、3、5、7、8、10、12 か月です。通常の年でも閏年でも、この月は 31 日あり31 日が返されます

これは4、6、9、11 か月です。通常の年であっても閏年であっても、月は 30 日あり30 日を返します

            

2月の場合は別途判断します

平年であれば28日を返し

うるう年の場合は、 28+1 日つまり 29 日を返します。

                     

実装コード:

#include <stdio.h>

//写一个函数返回对应月份天数:
int get_days_of_month(int y, int m)
{
	int d = 0; //该年该月天数
	//使用 switch循环,根据月份返回该月天数:
	switch (m)
	{
		//1 3 5 7 8 10 12 -- 返回31天
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
		{
			d = 31;
			break;
		}
		//4 6 9 11 -- 返回30天
		case 4:
		case 6:
		case 9:
		case 11:
		{
			d = 30;
			break;
		}
		//2月看平年还是闰年返回天数:
		case 2:
		{
			d = 28; //平年
			if ((y%4==0 && y%100!=0) || (y%400==0))
			{
				d += 1; //闰年,28+1天,即29天
			}
		}
	}
	return d; //返回天数
}

int main()
{
	return 0;
}

イメージを実現してください:

                 


                 

ステップ2:

メイン機能:

        

(1)。

変数を定義します。

int y = 0 ; --年

int m = 0 ; --月

             

(2)。

複数の入力セットに対してwhile ループを使用します

get_days_of_month 関数を 1 回呼び出して、 1 回入力した後の日数を返します

 返却日数を取得後、印刷します。

                     

実装コード:

#include <stdio.h>

//写一个函数返回对应月份天数:
int get_days_of_month(int y, int m)
{
	int d = 0; //该年该月天数
	//使用 switch循环,根据月份返回该月天数:
	switch (m)
	{
		//1 3 5 7 8 10 12 -- 返回31天
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
		{
			d = 31;
			break;
		}
		//4 6 9 11 -- 返回30天
		case 4:
		case 6:
		case 9:
		case 11:
		{
			d = 30;
			break;
		}
		//2月看平年还是闰年返回天数:
		case 2:
		{
			d = 28; //平年
			if ((y%4==0 && y%100!=0) || (y%400==0))
			{
				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;
}

イメージを実現してください:

                    

アイデア 1: 最終的なコードと実装効果

最終コード:

#include <stdio.h>

//写一个函数返回对应月份天数:
int get_days_of_month(int y, int m)
{
	int d = 0; //该年该月天数
	//使用 switch循环,根据月份返回该月天数:
	switch (m)
	{
		//1 3 5 7 8 10 12 -- 返回31天
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
		{
			d = 31;
			break;
		}
		//4 6 9 11 -- 返回30天
		case 4:
		case 6:
		case 9:
		case 11:
		{
			d = 30;
			break;
		}
		//2月看平年还是闰年返回天数:
		case 2:
		{
			d = 28; //平年
			if ((y%4==0 && y%100!=0) || (y%400==0))
			{
				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;
}

効果を実感してください:

                    

 ================================================= =======================

                       

アイデア 2: 配列を使用して各月の日付を保存する

一般的なアイデア:

(一)。

対応する月の日数を返す関数 get_days_of_month  を作成します

        

日数変数を定義します

int d = 0 ; --日

           

1 年の 12 か月の日数を格納する配列定義します

int days[ ] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };

添字が 0 の要素に乱数を入力し1 月の添字を 12 月の添字を 2などとします。

         

受信月を配列内の月の添字に対応させます。

d = 日[m];

           

配列内の 2 月は 28 日あり、これは通常の年です。

int y が閏年かどうかm が 2 月かどうかを判断します。

はい、d += 1、  つまり29 日です

         

日数 d を返します

             

(二)。

主な機能はアイデアと同じです

                


              

最初の一歩:

対応する月の日数を返す関数 get_days_of_month  を作成します

        

(1)。

日数変数を定義します

int d = 0 ; --日

           

(2)。

1 年の 12 か月の日数を格納する配列定義します

int days[ ] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };

添字が 0 の要素に乱数を入力し1 月の添字を 12 月の添字を 2などとします。

         

(3)。

受信月を配列内の月の添字に対応させます。

d = 日[m];

           

(4)。

配列内の 2 月は 28 日あり、これは通常の年です。

int y が閏年かどうかm が 2 月かどうかを判断します。

はい、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;
}

イメージを実現してください:

                 


                 

ステップ2:

主な機能はアイデアと同じです

                     

実装コード:

#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;
}

イメージを実現してください:

                    

アイデア 2: 最終的なコードと実装効果

最終コード:

#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;
}

効果を実感してください:

おすすめ

転載: blog.csdn.net/weixin_63176266/article/details/131334501