Visual C++で西暦のうるう年の判定をする方法

このQ&Aのポイント
  • 授業で学んだVisual C++を使って、西暦のうるう年の判定方法を教えてください。
  • 特に、5種類の西暦を入力して、判定結果を出力させるように変更する方法も教えてください。
  • テスト対策用の問題で、答えがなく困っています。お願いします。
回答を見る
  • ベストアンサー

Visual C++で・・・・。

以下の問題の答えを教えてくれませんか? 授業でVisual C++を習っていて、コレは課題ではありませんが、テスト対策用の問題で、答えがありません。 どなたか、どうかよろしくお願いします。 西暦(うるう年の判定) main関数:西暦の入力(入力された年=n) main関数:void uruu(int m)とする。    この関数の中で判定して、西暦とその結果を出力    この場合は戻り値を考える必要はない=>void    判定の内容は4で割り切れるか、100で割り切れるか、      さらに400で割り切れるかの条件 応用 5種類の西暦を入力して、入力した西暦を出力させて判定するように変更    main関数の中で西暦の入力と関数の実行を5回繰り返す。

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

  • ベストアンサー
  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.1

 こういう事は、学校(??)で教諭に聞きましょう。  まぁ簡単にヒントだけ... #define MaxCont=5 main() { int i,n; for ( i = 0; i < MaxCont; i++ ) { // 数値入力 uruu(n); } } void uruu(int m) { // 閏年の計算をしてね。 if( 閏年 == true ){ printf(_T("閏年")); } else { printf(_T("通常")); } } // // 大事な所は自分で考えないと...ね。

bugman
質問者

お礼

回答ありがとうございます。 学校の先生に聞こうと思ったんだけど、 授業意外で、会う機会がなく、 普段どこにいるのかわからないのです。(^-^; 今年(12月)の授業は終了してしまったので、 年内に先生に質問することはできないので、 mnabeさんのアドバイスをもとにがんばってみたいと思います。 また質問するかもしれないので、そのときはよろしくおねがいします。

関連するQ&A

  • C言語について

    こんばんわ。協力お願いします。 2問あります。 1問目です。 西暦年yearを引数として受け取り, 閏年かどうかの判定結果を戻り値として返す関数leap_year()を作成せよ. ただし,leap_year()は,閏年の場合は1を返し, そうでない場合は0を戻り値として返すものとする. 提出するプログラムは,関数leap_year()だけでなく, メイン関数main()も含む下記プログラムを完成させる形で作成する。 #include <stdio.h> /* ここに関数leap_year()のプロトタイプ宣言を記述する */ int main() { int i, year[3]; for (i=0; i<3; i++) { printf("西暦年を入力してください"); scanf("%d", &year[i]); if (leap_year(year[i]) == 1) { printf("閏年です.\n"); } else { printf("閏年ではありません.\n"); } } } /* ここに関数leap_year()を定義する */ 2問目です。 mのn乗を計算する関数power()を作成せよ. ただし,関数power()はm,nを引数とし, 戻り値としてmのn乗の値を返すものとする. m,nは,正整数とする.プログラムには, 関数power()だけでなく,m,nを入力し, mのn乗を出力するメイン関数main()を含むものとする. main()は,power()の前に記述すること. また,power()のプロトタイプ宣言も記述すること。 よろしくお願いします。

  • C言語 関数問題

    西暦年yearを引数として受け取り,閏年かどうかの判定結果を戻り値として返す関数leap_year()を作成せよ. ただし,leap_year()は,閏年の場合は1を返し,そうでない場合は0を戻り値として返すものとする. 提出するプログラムは,関数leap_year()だけでなく,メイン関数main()も含む下記プログラムを完成させる形で作成する #include <stdio.h> /* ここに関数leap_year()のプロトタイプ宣言を記述する */ int main() { int i, year[3]; for (i=0; i<3; i++) { printf("西暦年を入力してください"); scanf("%d", &year[i]); if (leap_year(year[i]) == 1) { printf("閏年です.\n"); } else { printf("閏年ではありません.\n"); } } } /* ここに関数leap_year()を定義する */

  • C言語 関数について

    協力お願いします。 2問あります。 1問目です。 西暦年yearを引数として受け取り, 閏年かどうかの判定結果を戻り値として返す関数leap_year()を作成せよ. ただし,leap_year()は,閏年の場合は1を返し, そうでない場合は0を戻り値として返すものとする. 提出するプログラムは,関数leap_year()だけでなく, メイン関数main()も含む下記プログラムを完成させる形で作成する。 #include <stdio.h> /* ここに関数leap_year()のプロトタイプ宣言を記述する */ int main() { int i, year[3]; for (i=0; i<3; i++) { printf("西暦年を入力してください"); scanf("%d", &year[i]); if (leap_year(year[i]) == 1) { printf("閏年です.\n"); } else { printf("閏年ではありません.\n"); } } } /* ここに関数leap_year()を定義する */ 2問目です。 mのn乗を計算する関数power()を作成せよ. ただし,関数power()はm,nを引数とし, 戻り値としてmのn乗の値を返すものとする. m,nは,正整数とする.プログラムには, 関数power()だけでなく,m,nを入力し, mのn乗を出力するメイン関数main()を含むものとする. main()は,power()の前に記述すること. また,power()のプロトタイプ宣言も記述すること。 よろしくお願いします。

  • 関数について

    協力お願いします。 2問あります 1問目です。 西暦年yearを引数として受け取り, 閏年かどうかの判定結果を戻り値として返す関数leap_year()を作成せよ. ただし,leap_year()は,閏年の場合は1を返し, そうでない場合は0を戻り値として返すものとする. 提出するプログラムは,関数leap_year()だけでなく, メイン関数main()も含む下記プログラムを完成させる形で作成する。 #include <stdio.h> /* ここに関数leap_year()のプロトタイプ宣言を記述する */ int main() { int i, year[3]; for (i=0; i<3; i++) { printf("西暦年を入力してください"); scanf("%d", &year[i]); if (leap_year(year[i]) == 1) { printf("閏年です.\n"); } else { printf("閏年ではありません.\n"); } } } /* ここに関数leap_year()を定義する */ 2問目です。 mのn乗を計算する関数power()を作成せよ. ただし,関数power()はm,nを引数とし, 戻り値としてmのn乗の値を返すものとする. m,nは,正整数とする.プログラムには, 関数power()だけでなく,m,nを入力し, mのn乗を出力するメイン関数main()を含むものとする. main()は,power()の前に記述すること. また,power()のプロトタイプ宣言も記述すること。 よろしくお願いします。

  • 閏年のプログラム

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

  • C言語についていくつか至急教えてください。

    3つほどお聞きしたいことがあります。 1つ目は閏年についてです。 2つの年をmain関数内で入力し、その西暦を引数とする関数CheckYearを使い、結果を出すのですが、条件としては1.西暦年が4で割り切れる閏年。 2.1つ目を満たしていても西暦年が100で割り切れるときは閏年ではない。 3.2つ目を満たしていても西暦年が400で割り切れるならば閏年である。 実行結果として、西暦を入力:2000 西暦を入力:2009  2000年 2004年 2008年 閏年は3回あります。 とあるようにならなければなりません。 2個目は、10進数の値(dec)を読み込み4ケタの2進数に変換するものです。 なお、結果表示にはprintf("(10進数)%d%d%d%d\n",dec,d3,d2,d1,d0);を使います。 実行結果としては、7と入力する場合→(10進数)7=(2進数)0111 となります。 3個目は、棒グラフを表示するものです。 要素5個持っている配列dataに10以下の値を入力する。 関数はputbox(void型)を使用しputboxは1行当たり10個の□や■を表示。 引数の値だけ、□を表示し残りは、■を表示する。 配列の要素の値も表示のこと。 実行結果としては、10,9,8,4,0を入力する場合 1:10 2:9 3:8 4:4 5:0 10 □□□□□□□□□□  9□□□□□□□□□■  8□□□□□□□□■■  4□□□□■■■■■■  0■■■■■■■■■■ となるようにします。 身勝手で尚且つ分かりにくい文章で申し訳ありません。 どうかよろしくお願いいたします。

  • C言語で以下のようなプログラムを組むには

    C言語で以下のようなプログラムを組むには C言語初心者です。 1900年~2100年で閏年になる年を拾い出し表示するプログラムを作成するにはどのようにすればよろしいのでしょうか? 1.西暦年が4で割り切れる年は閏年 2.ただし、西暦年が100で割り切れる年は平年 3.ただし、西暦年が400で割り切れる年は閏年 4で割り切れて100で割り切れない年と400で割り切れる年をピックアップすればよいので #include <stdio.h> int main(void) { int i, a, b; for(i = 1900; i<=2100; i++) !i % 4; printf("%d ", i); putchar('\n'); return (0); } ここまでは何となく思いついたのですが進めなくなっちゃいました。 よろしくお願いします。

  • プログラムの組み方が分かりません。

    ある課題で以下の問題が出題されました。 >>>> 2つのint型変数x,yにキーボードから値を入力し、その大小を判定する関数funcを作成せよ。この課題では、大きいと判定された数が代入された変数のアドレスがmain関数に戻されるものとする。 ============ #include<stdio.h> int *func(int *a,int *b) { /* 2つの値の大小判定を行い、アドレスを返す */ } main(void) { int x, y, *z; /* 変数 x,yにキーボードからデータを入力する */ /* 関数funcの呼び出し */ /* 変数zを用いて値の出力を行う */ } ============ <<<< 2行目の*funcというように、関数の頭に*が付くプログラムは初めてで、 どういう意味かもさっぱりわかりません。 それも含め、この問題はどういう風解けばいいのか、教えてください。 お願いします。

  • 西暦を入力して、うるう年かどうか判定せよ!という問題です。

    西暦を入力して、うるう年かどうか判定せよ。ただしうるう年の条件は4で割り切れる、100で割り切れない、400で割り切れる。という問題です!!誰か教えて下さい!お願いします~。

  • C言語プログラム能力検定の問題でわからないところがあります

    今度C言語プログラム能力検定を受けるのですが、過去問の回答ではわからず質問させてもらってます(以下ソース) ------------------------------------------ #include<stdio.h> int mod(int a, int b); int d, f = 10; main() { int a,b,c; enum cl {g,h} a=12; b=5; c=mod(a,b); a++; ++b; c=mod(a,b); printf("c=%d\n",c); ←(1) } int mod(int b, int a) { int c; c=b/a; c=b-c*a; return(c); } -------------------------------------------------- 問題は(1)はどのように出力されるでしょう?といったもので、 答え(出力結果)は「1」でした。回答の説明によると 「変数cはmain関数内で宣言され、mod関数の戻り値が格納される。 mod関数の戻り値は二つの引数の剰余であり、ここでは2回目のmod関数 の戻り値が表示される。2回目の仮引数は、aが6で、bが13で戻り値は1になる」 ということでしたが>mod関数の戻り値は二つの引数の剰余であり… というのがよくわかりません…剰余算というのは「%」のことですよね? であれば「c= a % b」といった記述がでてくれば13÷6=2…1で「1」となり、理解できるのですが、それらしき記述がないので(--;) どなたか教えていただけないでしょうか? よろしくおねがいします。

専門家に質問してみよう