• ベストアンサー

日数チェックプログラム

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)); } ここから先がわかりません。 だれか、教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.5

>考えてもわかりませんので、教えてください。 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; //残りはそうでない年 }

80221
質問者

お礼

できました。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

回答No.6

#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)
回答No.4

>int nisuu_chk(int nen,int tuki) >{ >ここからわかりません 早っ!

80221
質問者

補足

考えてもわかりませんので、教えてください。

全文を見る
すると、全ての回答が全文表示されます。
noname#88772
noname#88772
回答No.3

こんにちは。 前の投稿は締め切った方がいいですよ。 手順だけ載せますので後のコーディングは自力でどうぞ。 #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)
回答No.2

ここのサイトは期待した結果が得られないと思いますので、 参考URLのほうに投稿されてみてはいかがでしょうか?

参考URL:
http://www23.atwiki.jp/homework/pages/4.html
全文を見る
すると、全ての回答が全文表示されます。
  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>ここから先がわかりません。 次は nisuu_chk() を実装しましょう。補足にどうぞ。

80221
質問者

補足

int nisuu_chk(int nen,int tuki) { ここからわかりません

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 万年カレンダー

    万年カレンダー作ろうとしているのですが、ここからの作り方がわかりませんので、教えてください。 int youbi_chk(int,int,int); int uru_chk(int); void main(void) { int yy,mm; char week[7][4]={\"SUN\", \"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\"}; int mday[12]={31,28,31,30,31,30,31,31,30,31,30,31}; printf(\"年(西暦:4桁)を入力して下さい:\"); scanf(\"%d\",&yy); printf(\"月を入力して下さい:\"); scanf(\"%d\",&mm);

  • 日数を計算する方法

    以下のようにして変数の配列を使って、 月の日数を格納しています。 int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31}; これを使って、 元旦から入力された月日の日数を計算したいのですが どの様にすればいいですか? 例えば、 4月5日の場合は、 1月 31日 2月 28日 3月 31日 4月 5日 なので「95日」 ---------------- 途中までのプログラム #include<stdio.h> main(void) { int yy, mm, dd; int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31}; printf( "西暦を入力しなさい" ); scanf( "%d", &yy ); printf( "月を入力しなさい" ); scanf( "%d", &mm ); printf( "日を入力しなさい" ); scanf( "%d", &dd ); /* うるう年判定 */ if (((yy%4==0)&&(yy%100!=0))||(yy%400==0)) mon[1]=29; else mon[1]=28; ・ ・

  • 構造体について

    5件のデータをRECORDに追加したいのですが、 RECORD inputdata(void)の宣言文エラーなどのコンパイルエラー。それと、inputdataを用いてどうやって5件のデータを入れたらいいかがわかりません。教えてください。 #define SIZE 5 #include <stdio.h> typedef struct{ int yy; int mm; int dd; }YMD; typedef struct{ char name[20]; YMD birthday; int age; }RECORD; RECORD inputdata(void); void main(void) { int i; for(i = 0;i < SIZE;i++){ inputdata(); } RECORD inputdata(void) { RECORD person; printf("名前>"); scanf("%s", person.name); printf("誕生日入力\n"); printf("年>"); scanf("%d", person.birthday.yy); printf("月>"); scanf("%d", person.birthday.mm); printf("日>"); scanf("%d", person.birthday.dd); return person; }

  • 長方形、円、三角形の計算するプログラムでエラーがでます

    タイトルの通りなんですがエラーがでます>< コンパイラはできたのですが、実行して二つ目の入力するとこで、入力したあと止まります。 どこがおかしいのでしょうか? #include <stdio.h> int sikaku(void); int en(void); int main(void) { char ch; int a,b; printf("円(A) 長方形(B) 三角形(C)\n"); printf("入力してください:"); ch = getche(); if(ch == 'C'){ printf("\n底辺を入力してください:"); scanf("%d ",a); printf("高さを入力してください:\n"); scanf("%d",b); printf("%dです",a * b); } else if(ch == 'B') sikaku(); else if(ch == 'A') en(); return 0; } int en(void) { int a; float f; printf("\n半径を入力してください:"); scanf("%d",a); printf("円周率を入力してください:"); scanf("%f",f); printf("%fです",a * a * f); return 0; } int sikaku(void) { int a,b; printf("\n縦を入力してください:"); scanf("%d",a); printf("横を入力してくさい:\n"); scanf("%d",b); printf("dです",a * b); return 0; }

  • 万年カレンダー

    万年カレンダーの日にちが、一日ずれて表示されますのでその原因を教えてください。 void main() { int nen,tuki,niti; int ff,i,n; int carender[6][7]; niti=0; for(i=0;i<6;i++)for(n=0;n<7;n++) carender[i][n]=0; printf("西暦(4桁)→"); scanf("%d",&nen); printf("month:"); scanf("%d",&tuki); ff=youbi_chk(nen,tuki,1); for(i=ff;i<7;i++) {carender[0][i]=niti;++niti;} for(n=1;n<6;n++){ for(i=0;i<7;i++){ if(niti<=niti_chk(tuki,nen)) {carender[n][i]=niti;++niti;}} } printf(" SUN MON TUE WED THU FRI SAT\n"); for(n=0;n<6;n++){ for(i=0;i<7;i++) if(carender[n][i]==0)printf(" ");else printf("%4d",carender[n][i]); printf("\n");} } int youbi_chk(int y,int m,int d) { int youbi; if(m<3) {y--; m+=10;} else {m-=2;} youbi=(y+(y/4)-(y/100)+(y/400)+(13*m-1)/5+d)%7; return youbi; } int uru_chk(int y) { if(y%400==0) return 1; if(y%100==0) return 0; if(y%4==0) return 1; return 0; } int niti_chk(int m,int y) { int hi[12]={31,28,31,30,31,30,31,31,30,31,30,31}; hi[1]+=uru_chk(y); return hi[m-1]; } プロトタイプ宣言は、省いてます。

  • Cのプログラム(初心者)

    #include<stdio.h> void main(void) { int a,b,c; printf("西暦で生まれた年を入力してください。\n"); scanf("%d",&a); printf("今の年を西暦で入力してください。\n"); scanf("%d",&b); c=b-a; if('0'<=c&&c<='23'){ printf("あなたは%d歳です。げんき。\n",c); } else if('24'<=c&&c<='40'){ printf("あなたは%d歳です。仕事盛り。\n",c); } else if('41'<=c&&c<='60'){ printf("あなたは%d歳です。まだいける。\n",c); } else if('61'<=c&&c<='99'){ printf("あなたは%d歳です。がんばれ。\n",c); } else{ printf("100歳以上なの?\n"); } } というプログラムを作っているのですが、うまく実行できません。間違いがあると思うのですが、それもよくわかりません。ビルドは成功するのですが、どの数字を入力しても「げんき」しか出てきません。 わかる人がいたら教えてください。 お願いします。

  • 猫でもわかるC言語の本で勉強された方教えてー;_;

    猫でもわかるC言語を勉強しています Microsoft Visual C++2008 Express Edition のバージョンのコンパイラで 第5章のscanf関数のところで困っていることになっていますsos 本の通りに /*scan01.c*/ #include <stdio.h> int main() { int seisu; printf("整数値を入力してください----125"); scanf("%d",&seisu); printf("あなたの入力した数値は%dですね",seisu); return 0; } と書いてビルドをしても警告1になります、あと /*scan01.c*/ #include <stdio.h> #define _CRT_SECURE_NO_DEPRECATE int main() { int seisu; printf("整数値を入力してください----125"); scanf_s("%d",&seisu); printf("あなたの入力した数値は%dですね",seisu); return 0; } と書いてもエラーや警告は0になるけどデバッグ→デバッグなしで開始でいつもどうりに画面に(コマンド プロンプト?っぽいやつに)出力をすると本の通りに 整数値を入力してください----125 あなたの入力した数値は125ですね とならず 整数値を入力してください----125 だけが出力されます(コマンド プロンプトに)・・・ みなさんはどうやって突破したの!?いや、されたのッ!!!それともいらってはいないんですけどコンパイラの設定が悪いんでしょうか?;_; 何をどこをヘルプしたらいいやら分かりません教えてください先輩僕は一体どうしたらいいの!!!! これ以降いっぱいscanfのこといっぱい出るのにぃ~~OTL←やっぱ僕これになるんでしょうかね・・。

  • C言語プログラム

    2つの整数を入力させ、それらが等しい場合hitoshii、異なる場合にはhitoshikunaiと出力するプログラムを作りたいのですが、うまくいきません。間違っているところを教えてください。 #include<stdio.h> #include<conio.h> void main() { printf("整数を入力してください:"); int number1; scanf("%d",number1); printf("整数を入力してください:"); int number2; scanf("%d",number2); if(number1==number2) { printf("hitoshii"); } else { printf("hitoshikunai"); } getch(); }

  • 3つの整数が等しいかどうか調べるプログラム

    3つの整数が等しいかどうか調べるプログラムがよくわからないので、どなたか教えていただけないでしょうか?ちなみに、わからないながらに作ってみました。 #include <stdio.h> int main(void) { int x, y, z; puts("3つの整数を入力してください。"); printf("整数1:"); scanf("%d",&x); printf("整数2:"); scanf("%d",&y); printf("整数3:"); scanf("%d",&z); if (x==y==z) puts("3つの整数の値は同じです。"); else puts("3つの整数の値は違います。"); return (0); }

  • 閏年のプログラム

    C言語(閏年)の質問です。 任意の範囲の年から閏年の表示とその数をカウントして次の実行結果のように表示するプログラムの作成で途中まではわかって修正・追加する箇所があったら一緒に教えてください。(ここでは2つの年をmain関数内で入力し、その範囲の西暦を引数とする関数checkYearを使用するものとする。int型の関数checkYearは、引数に西暦をとり、その西暦が閏年であれば、1を返し、閏年でない場合は0を返す。) なお、閏年の判定方法は以下のとおりである。 条件1 西暦年が4で割り切れる年は閏年である 条件2 条件1を満たしていても、西暦年が100で割り切れるときは閏年でない 条件3 条件2を満たしていても、西暦年が400で割り切れるならば閏年である 実行例1 西暦を入力:2000 西暦を入力:2009 2000年 2004年 2008年 閏年は3回あります。 実行例2 西暦を入力:2100 西暦を入力:2000 2000年 2004年 2008年 2012年 2016年 2020年 (省略) 2096年 閏年は25回あります。 実行例3 西暦を入力:2090 西暦を入力:2110 2092年 2096年 2104年 2108年 閏年は4回あります。 #include <iostream> bool checkYear(int year); int main() { int year; int year2; printf("西暦を入力:"); scanf("%d",year); printf("西暦を入力:"); scanf("%d",year2); int count = 0; for (int i = year; i < year2; i++) { if (checkYear(i)) { printf("%d年\n"); count++; } } printf("閏年は%d回です。\n"); return 0; } bool checkYear(int year) { return (((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0); }

このQ&Aのポイント
  • プリンターの印刷待ちエラーが発生し、起動できない状態となっています。
  • エプソン社製品のプリンターに関する問題について質問です。
  • プリンター印刷待ちエラーの解決方法を教えてください。
回答を見る

専門家に質問してみよう