すべてのカテゴリ » 知識・教養・学問 » 知識・学問 » 数学・サイエンス

質問

終了

閏年かどうかを判定するプログラムを作ることになり、作ったのですが値を返さなくてこのまま実行したら全て閏年になってしまいます。
どうすればいいかお願いします。
ちなみに2つ目のint uruudoshi(year)までは写したのであっているはずです。
#include<stdio.h>
int uruudoshi(year);
int main(void){
int year;
printf("年:");
scanf("%d",&year);
if(uruudoshi(year)==1){
printf("閏年\n",year);
}
else{
printf("平年\n",year);
}
}
int uruudoshi(year){
if((year%4==0)&&(year%400==0)&&(year%100==0)){
printf("year==1\n");
return year;
}else{
printf("year==2\n");
return year;
}
printf("\n");
}

  • 質問者:匿名
  • 質問日時:2011-12-30 00:48:15
  • 0

並び替え:

関数int uruudoshi(year)で受け取った年をそのまま返してますね。
でメインルーティンで受け取った年で判断かけてる。

あれ?全部「閏年」ではなく全部「平年」で終わってませんか?

何かご質問に謎が残りますが、直す点とすれば
int uruudoshi(year)の返値を1(閏年)or2(平年)で返すようにすること。

あと
if((year%4==0)&&(year%400==0)&&(year%100==0))
もまちがってますね。
これじゃ400年に1度しか閏年になりません。
ここは独力でがんばってみましょうか。

  • 回答者:匿名 (質問から11時間後)
  • 0
この回答の満足度
  
とても参考になり、非常に満足しました。回答ありがとうございました。

ちょっとだけ修正すると、

#include<stdio.h>
int uruudoshi(int year);
int main(void){
int year;
printf("年:");
scanf("%d",&year);
if(uruudoshi(year)==1){
printf("閏年\n",year);
}
else{
printf("平年\n",year);
}
}
int uruudoshi(int year){
if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)){
return 1;
}else{
return 2;
}
}

この回答の満足度
  
とても参考になり、非常に満足しました。回答ありがとうございました。
お礼コメント

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

関連する質問・相談

Sooda!からのお知らせ

一覧を見る