ここから本文です

C言語です。現在の月を数値で入力して、その月の日数を表示するプログラムを作成し...

アバター

ID非公開さん

2020/7/800:48:58

C言語です。現在の月を数値で入力して、その月の日数を表示するプログラムを作成しなさい。入力した数値が範囲外である場合は「入力した数値が範囲外です。」と表示させる、うるう年は除くというものです。

#include <stdio.h>
int main(void){

int month, days;
printf("現在の月を数値で入力して下さい。\n");
scanf("%d", &month);

switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("31\n");
break;
case 4:
case 6:
case 9:
case 11:
printf("30\n");
break;
case 2:
printf("28\n");
break;
default:
printf("0\n");
break;

}

if (days != 0){
printf("%d月の日数は%dです。\n", month, days);
}
else {
printf("入力した数値が範囲外です。\n");
}

return 0;

}

12を入力した結果
現在の月を数値で入力して下さい。
31
入力した数値が範囲外です。
になりました。if文のところが出力されないのはなぜですか。

閲覧数:
30
回答数:
1

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

kapuseruさん

2020/7/800:53:29

daysに何も入っていないからではないでしょうか.

daysは宣言こそされていますが,switch文では一切更新されていない変数になっています.

switchで判定する時にprintf()をしていますが,それと同時にdaysの値も上書きするようにします.

-------------------
#include <stdio.h>
int main(void){

int month, days=0;
printf("現在の月を数値で入力して下さい。\n");
scanf("%d", &month);

switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
printf("31\n");
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
printf("30\n");
break;
case 2:
days = 28;
printf("28\n");
break;
default:
printf("0\n");
break;

}

if (days != 0){
printf("%d月の日数は%dです。\n", month, days);
}
else {
printf("入力した数値が範囲外です。\n");
}

return 0;

}
-------------------
結果:

12
31
12月の日数は31です。

  • アバター

    質問者

    ID非公開さん

    2020/7/801:24:55

    現在の月を数値で入力して下さい。
    12月の日数は31です。

    と出したい場合はどうすればいいのでしょうか

  • その他の返信(1件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる