五輪が開催される年の判定

このQ&Aのポイント
  • 夏季五輪と冬季五輪の開催年を判定するプログラムです。
  • 入力された西暦年が4で割り切れる場合、夏季五輪の年と判定します。
  • また、2で割り切れるが4で割り切れない場合、冬季五輪の年と判定します。それ以外の年は五輪が開催されない年と判定されます。
回答を見る
  • ベストアンサー

五輪が開催される年の判定

#include<stdio.h> int main(void){ int year; printf("西暦年を入力してください:"); scanf("%d", &year);      if (year % 4 == 0) printf("夏季五輪\n"); if (year % 2 == 0 && year % 4 != 0) printf("冬季五輪\n"); if (year % 2 != 0) printf("五輪なし\n"); return 0; } この部分は、     if (year % 4 == 0) printf("夏季五輪\n"); if (year % 2 == 0 && year % 4 != 0) printf("冬季五輪\n"); if (year % 2 != 0) printf("五輪なし\n"); なぜこうなるのか説明してください。 五輪が開催されるのは、4年ごとらしいのですが、 レベルの低いかもしれない、質問ですが、どうか解りやすく なぜこうなるのか教えて下さい、よろしくお願いします。

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

  • ベストアンサー
  • maiko0333
  • ベストアンサー率19% (840/4403)
回答No.1

夏のオリンピックは4年ごと(西暦が4で割れる年)で その2年後に冬のオリンピックがあります(冬のオリンピックとしては4年ごと) なので、 4で割れたら(余り=0)夏季五輪 4で割れずに2で割れたら冬季五輪 それ以外はオリンピックなし。になります。

aiueo6391
質問者

お礼

回答ありがとうございます。 ベストアンサーにします。

関連するQ&A

  • 夏季五輪冬季五輪開催と開催しない年の計算

    #include<stdio.h> int main(void) { int year; printf("西暦年を入力して下さい:"); scanf_s("%d", &year); if (year % 4 == 0) printf("夏季五輪\n"); if (year % 2 == 0 && year % 4 != 0)printf("冬季五輪\n"); if (year % 2 != 0) printf("五輪なし\n"); return 0; } まずこれを見ると解る通り、yearに何が入るか解りませんが 適当な西暦の年の数値を入力して2か4で割って余りで計算して0になればいいっていう 例題なんですが、全く意味が解りません。 例えば2018年と入力して冬季五輪と出るのですが、 いったいどういう意味なのかさっぱり解りません。 2018年に冬季五輪がやるという事でしょうか? 適当な数値を入力しているだけだからそんな訳ではないですよね。 if文を使ってやっていたのですが、この例題は何か意味があるのでしょうか?

  • C言語入門者です。プログラムの添削をお願いします。

     任意の西暦年を入力し、その年がオリンピックの開催年(夏季・冬季問わず)かどうかを判定するプログラムを作ろうと思っています。  #include<stdio.h> int main(void) {     int year, rest;     rest = year % 4;     printf("オリンピック(夏季・冬季問わず)が開催される年(西暦)を一つ答えなさい。");     scanf("%d", year);     if(rest == 0) printf("正解!夏季五輪!");     if(rest == 2) printf("正解!冬季五輪!");     if(!(rest == 0 || rest == 2)) printf("不正解!");     return 0; } 夏季五輪開催年を入力した場合、「正解!夏季五輪!」 冬季五輪開催年を入力した場合、「正解!冬季五輪!」 それ以外の場合、「不正解!」 と画面に表示されるようにしたいのです。    しかし、year にどんな数値を入力しても、「正解!夏季五輪!」としか表示されません。どこが間違っているのでしょうか?添削よろしくお願いします。

  • 入力値のチェック(西暦、万年カレンダ)C言語

    入力値が範囲内であるかの判定、違ったらもう一度繰り返すプログラムを作成したいのですが、うまく出来ません。よろしくお願いします。 初心者なので、判りやすく説明していただけると助かります。 #include <stdio.h> void main(){ int a , year ; printf(" 西暦入力--> "); scanf("%d",year); for( a = 0 ; a < 1 ;){ if( year >= 1 && year <=9999 ){ a = a + 1 ; }else{ printf("1年~9999年で入力せよ\n"); } } } scanf()の辺りを変えなければと思っているのですが、どうすればよいのかわかりません。scannf()意外に何を使った方が良いですか? パラメータはどうすればよいですか? 祝日を判定するやり方もわかれば教えていただけませんか? サイトがあったら、URLお願いします。 @@@@@ ↑のプログラムがすべて左よりになってしまったのですが、どうすれば段差をつけれますか?

  • 素数判定の繰返し

    繰返し素数判定を行ない、CtrlーDで終了するプログラムをつくっています。 まず繰返しなしの素数判定プログラムを作り #include<stdio.h> int main(void) { int a,i; printf("自然数を入力:"); scanf("%d",&a); if(a<=0) printf("入力エラーです。\n"); else if(a==1) printf("1は素数ではない。\n"); else{ for(i=2; i*i<=a; i++){ if(a%i==0) break; } if(i*i>a) printf("%dは素数です。\n",a); else printf("%dは素数ではない。\n",a); } return(0); } これはちゃんとできたのですがそれを繰り返すことができません。 #include<stdio.h> int main(void) { int a,i; printf("自然数を入力:"); scanf("%d",&a); while((a=getchar())!=EOF){ if(a<=0) printf("入力エラーです。\n"); else if(a==1) printf("1は素数ではない。\n"); else{ for(i=2; i*i<=a; i++){ if(a%i==0) break; } if(i*i>a) printf("%dは素数です。\n",a); else printf("%dは素数ではない。\n",a); } printf("自然数を入力:"); scanf("%d",&a); } printf("プログラムを終了します。\n"); return(0); } これは訳わからないことになっちゃいます。。。 どうしたらいいんでしょうか??

  • 教えてください

    西暦年を受け取り、和暦年を返す関数を作成して該当する部分を関数呼び出しにします。また、平成以前の西暦年が渡されたら0を返す。1が返されたら1989年は平成元年です。と表示するのですが、いまいち分かりません。このプログラムを使います。#include <stdio.h> int main(void) { int no; printf("西暦を入力してください。"); scanf("%d", &no); if(no >1988) printf("%dは平成%d年です。\n", no, no-1988); else printf("平成ではありません。\n"); return (0); } 教えてください。お願いします。これは、C言語です。

  • C言語について

    次のような問題です。 問 自然数nを入力し、nを3で割って割り切れるかどうかを判定し結果を表示する。「割り切れる」、「1余る」、「「2余る」のいずれかが入るものとする。 このようなものをつくりました。 #include<stdio.h> int main(void) { int n; printf("自然数:"); scanf("%d",&n); if(n==0){ printf("割り切れる\n"); }else if(n==1){ printf("1余る\n"); }else{ printf("2余る"); } return(0); } これで合っているかよろしくお願いします。

  • c言語についての質問です。

    #include<stdio.h> int main(void){ int a; printf("1文字たいぷしてください。\n"); scanf("%d",&a); if(a>=65 && a<=90){ printf("大文字です。\n"); } else if(a>=97 && a<=122){ printf("小文字です。\n"); } else{ printf("大文字でも小文字でもありません\n"); } return 0; } このプログラムは正しくなくて、 intをchar %dを%cにかえなければなりません。 なぜintはダメなんでしょうか? できれば丁寧に教えてください。 お願いします。

  • カレンダー作成

    C言語初心者です。 西暦と月を入力してその月のカレンダーを作成するプログラムの問題なのですが #include <stdio.h> #define MMAX 12 #define COMP (year - 1) int main(void) {  int i, j, year, month, day, youbi, ycnt, mcnt = 0;  int mday[MMAX] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};  printf("西暦と月を入力して下さい-->");  scanf("%4d%2d, &year, &month");  if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)   mday[1] = 29;  for (i = 0; i < [A]; i++) {   mcnt += mday[i];  }  mcnt++;  [B] = ((COMP + COMP / 4 - COMP / 100 + COMP / 400) + mcnt) % 7;  printf("\n%4d 年%2d 月\n", year, month);  printf("----------------------------\n");  printf(" 日 月 火 水 木 金 土\n");  for (j = 0, ycnt = 0; j < youbi; j++, ycnt++) {   printf(" ");  }  for (day =1; day <= mday[month - 1]; day++) {   if ([C])    printf("[%2d]", day);   else    printf(" %2d ", day);   ycnt++;   if ([D]) {    printf("\n");    ycnt = 0;   }  }  return (0); } [A]、[B]、[C]、[D]に答えを入れなきゃいけないのですが私が考えた答えだと カレンダーの表示すらされません。どこがいけないのでしょうか? #include <stdio.h> #define MMAX 12 #define COMP (year - 1) int main(void) {  int i, j, year, month, day, youbi, ycnt, mcnt = 0;  int mday[MMAX] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};  printf("西暦と月を入力して下さい-->");  scanf("%4d%2d, &year, &month");  if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)   mday[1] = 29;  for (i = 0; i < month; i++) {   mcnt += mday[i];  }  mcnt++;  youbi = ((COMP + COMP / 4 - COMP / 100 + COMP / 400) + mcnt) % 7;  printf("\n%4d 年%2d 月\n", year, month);  printf("----------------------------\n");  printf(" 日 月 火 水 木 金 土\n");  for (j = 0, ycnt = 0; j < youbi; j++, ycnt++) {   printf(" ");  }  for (day =1; day <= mday[month - 1]; day++) {   if (youbi = 0)    printf("[%2d]", day);   else    printf(" %2d ", day);   ycnt++;   if (youbi > 7) {    printf("\n");    ycnt = 0;   }  }  return (0); } よろしくお願いします。

  • 学校の課題で悩んでます

    #include <stdio.h> void main(){ int okane; float kion; printf("今日のお金は?\n"); scanf("%d",&okane); printf("今日の気温は?\n"); scanf("%f",&kion); if( okane >=700&&kion>=30.0 ){ printf("冷やし中華を食べよう\n"); } if( okane >=700&&kion<30.0 ){ printf("ラーメンを食べよう\n"); } if( okane <=700){ printf("バイトしろ"); } } この文を演算しを使わずにifelse文に書き換えるやり方を教えて下さい

  • 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"); } } というプログラムを作っているのですが、うまく実行できません。間違いがあると思うのですが、それもよくわかりません。ビルドは成功するのですが、どの数字を入力しても「げんき」しか出てきません。 わかる人がいたら教えてください。 お願いします。

専門家に質問してみよう