- ベストアンサー
日数チェックプログラム
c++言語で西暦と月を入力してその年月の日数を表示するプログラムを教えてください #define CRT_SECURE_NO_DEPRECATE #include <stdio.h> int nisuu_chk(int,int); int uru_chk(int,int); void main(void) { int yy,mm; char dsp[4]={28,29,30,31}; printf("年(西暦:4桁)を入力して下さい"); scanf("%d",&yy); printf("月を入力して下さい"); scanf("%d",&mm); printf("%d年%d月は%d日まであります",yy,mm,nisuu_chk(yy,mm)); } ここから先がわかりません。 だれか、教えてください
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>考えてもわかりませんので、教えてください。 int nisuu_chk(int nen,int tuki) { // 月が2月以外はその月の日数は決まっている。 // 1月なら31日、3月なら31日、4月なら30日・・・以下同様 if (tuki==1) return 31; if (tuki==3) return 31; if (tuki==4) return 30; ・・・以下同様 //最後に2月だけが残る。 //うるう年なら29日、そうでないなら28日になる。 if (uru_chk(nen,tuki)==1) return 29;//ここがうるう年 return 28;//ここはうるう年でないケース } int uru_chk(int nen,tuki) { //月はみない、年だけをみる。 //うるう年なら1を返す、そうでないなら0をかえす //うるう年4年に1回ある。2000,2004のように4で割り切れる //年をうるう年とする。(厳密には違うが・・・) //4で割り切れるというのは、4で割ったあまりが0のこと if (nen%4==0) return 1; //これがうるう年 return 0; //残りはそうでない年 }
その他の回答 (5)
- yaemon_2006
- ベストアンサー率22% (50/220)
#include <stdio.h> int isleap(int y) { return !(y % 400) || (y % 100) && !(y % 4); } int days(int y, int m) { return 31 - ((m + (m < 8)) & 1) - (m == 2) * (2 - isleap(y)); } int main(void) { int y, m; scanf("%d %d", &y, &m); printf("%d\n", days(y, m)); return 0; }
- koko_u_
- ベストアンサー率18% (459/2509)
>int nisuu_chk(int nen,int tuki) >{ >ここからわかりません 早っ!
補足
考えてもわかりませんので、教えてください。
こんにちは。 前の投稿は締め切った方がいいですよ。 手順だけ載せますので後のコーディングは自力でどうぞ。 #include <stdio.h> int nisuu_chk(int,int); int uru_chk(int,int); void main(void) { /* 年と月の入力 */ /* nisuu_chk()で日数を取得 */ /* 結果を出力 */ } int nisuu_chk(int yy,int mm) { /* 各月の日数リストを宣言しておく */ /* 月に対応した日数を取得 */ /* もしうるう年の関連月なら調整 */ /* 日数を返す */ } int uru_chk(int yy,int mm) { /* うるう年かどうかをチェック */ /* うるう年かどうかを返す */ } ご参考までに。
- tatsu99
- ベストアンサー率52% (391/751)
ここのサイトは期待した結果が得られないと思いますので、 参考URLのほうに投稿されてみてはいかがでしょうか?
- koko_u_
- ベストアンサー率18% (459/2509)
>ここから先がわかりません。 次は nisuu_chk() を実装しましょう。補足にどうぞ。
補足
int nisuu_chk(int nen,int tuki) { ここからわかりません
お礼
できました。 ありがとうございます。