【C言語】月の日数を取得する

目次

序文

1. 問題の説明

2. 問題解決のアイデア 

 3. 解決策 1 (switch ステートメント)

コード例:

4. 解決策 2 (配列)

コード例:

4. 走行結果 

やっと


序文

C言語演習・・・1ヶ月の日数を求める2つの方法をswitch文と配列の2つの側面から解説。


提示:以下是本篇文章正文内容,下面案例可供参考

1. 問題の説明

 説明:

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

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

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

出力の説明:

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

例 1:

入力:

2008年2月

出力:

29

2. 問題解決のアイデア 

月ごとの日数の分布:

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と配列を使えば解決できます。

 3. 解決策 1 (switch ステートメント)

switch文を使用するとケースを1~12に分けます。

ケース 1、3、5、7、8、10、12 日はすべて 31 日です。

ケース 4、6、9、11 日はすべて 3 です。

ケース 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;
}

​

4. 解決策 2 (配列)

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

4. 走行結果 


やっと

幸せな時間はいつも短い. 以上が今日私が話したいことです. この記事は, Xiao Zhao同志がC言語を学習する際に遭遇した演習を紹介し, その解決策と実装を表現します. 家族は批判や修正を歓迎します。Xiao Zhao同志は更新を続けています。継続的な学習の動機は、1つのボタンと3つの連続リンクによるBaoziのサポートです〜

                                                  

おすすめ

転載: blog.csdn.net/weixin_70411664/article/details/128989325