質問: 西暦と月(ともに整数型)を入力し、その月の日数を出力する。ただし、以下の場 合にはエラー表示する。
回答: たぶんC言語ですよね? 私はC言語を使ったことがなくて,割り算の「余り」を算出するC言語の計算式を知らないので,ベーシック風に,しかも文章スタイルで書きます。 意味は十分に通じると思うから,あとはご自分でC言語に直してください。 なお,紀元前が入ると面倒なので,西暦はプラスの整数とします。 というか,グレゴリオ歴は1582年に作られたので,1582年以前には当てはまらないけど...。 西暦をy,月をm,うるう年かどうかをu(平年=0,閏年=1)としたら,プログラムの流れは次の通りになります。 1 if (y<0)or(m<0)or(m>12) then printf("エラーです");goto end 2 if (西暦y年が400で割り切れる,つまり,y/400の商が0)then u=1;goto3 else if(y/100の商が0) then u=0;goto3 else if (y/4の商が0) then u=1;goto3 3 if (m=1)or(M=3)or(m=5)or(m=7)or(M=8)or(m=10)or(m=12) printf("西暦”,y,"年”,m,"月は31日まであります");goto end 4 if (m=4)or(m=6)or(m=9)or(m=11) printf("西暦”,y,"年”,m,"月は30日まであります");goto end 5 if u=1 then printf("西暦”,y,"年は閏年なので2月は29日まであります");goto end else printf("西暦”,y,"年は閏年でないので2月は28日までです");goto end ➅ end : printf("これでどうでしょうか?") 1の部分は西暦と月が正しいかどうかをチェックする部分 2の部分が西暦y年がうるう年かどうかを判定する部分 3から5がその月の日数を印刷するする部分です。 ➅はオマケ。