switch文で曜日を表示するプログラムを作成したいのですが、
任意の月の1日を日曜日とし、入力された日にち(変数date)の曜日を変数dayとしました。
day=(date-1)%7
とし、day=0のとき日曜日、day=1のとき月曜日、・・・、day=6のとき土曜日とします。
dateに0以下の数が入力されたとき、default文で「その月は1日から始まります。」
dateに32以上の数が入力されたとき、default文で「その月は31日までです。」
といったエラーを表示させたいと思います。
1つのswitch文の中に2種類のdefault文をどうやって書いたらいいのかわかりません。
switch文以下のプログラムは、以下のように書いてみました。
day=(date-1)%7;
switch(day)
{
case 0:
printf("1月%d日は日曜日です。",date);
break;
case 1:
printf("1月%d日は月曜日です。",date);
break;
case 2:
printf("1月%d日は火曜日です。",date);
break;
(case 3~case 5も同様に書く。)
case 6:
printf("1月%d日は土曜日です。",date);
break;
default:
printf("1月は31日までです。"); /*dateに32以上の数が入力された場合のエラー表示*/
break;
default:
printf("1月は1日から始まります。"); /*dateに0以下の数が入力された場合のエラー表示*/
break;
}
しかし、1つのswitch文にdefault文は1つしか書けませんよね?
入力された日によってdefault文を使い分けるにはどうしたらよいのでしょうか。
No.2ベストアンサー
- 回答日時:
default内で処理するのなら以下の様にしますが、今回の場合はswitchの手前で判断しないとdefaultに該当する条件がありません。
例えば(32-1)%7=4となってしまいます。default:
if (date >= 32)
printf("1月は31日までです。"); /*dateに32以上の数が入力された場合のエラー表示*/
else
printf("1月は1日から始まります。"); /*dateに0以下の数が入力された場合のエラー表示*/
break;
No.3
- 回答日時:
書かれている switch(day){ ~ } ですと
defaultは、何をどうやっても「dayが 0~6以外の整数の場合」の意味にしかならないんですが・・・
dateがマイナスの場合はともかくプラスの場合はdayは0~6の値になるのでdefaultにはどうやっても行きません。
なのでswitch (day) の前で調べるしかないです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- Excel(エクセル) エクセルの祝日に色が反映しない 4 2022/05/18 09:58
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript jsで、switch文で書かれた分をif文にできませんか。 1 2022/07/28 15:10
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- Visual Basic(VBA) 【再投稿】VBAのシフト表でバグが出て困っています 3 2022/09/24 08:29
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
scanfが2回使えない・・・?;
-
数字以外が入力されたらエラー...
-
プログラミング初心者です。 Py...
-
java初心者です。入力されたの...
-
"scanf"でエンターで改行させな...
-
if文の条件にscanf関数を使うと…?
-
2進数の1の数を数える問題
-
cout関数を使っているのですが...
-
プログラミングの問題で、キー...
-
プログラミングの問題です 「金...
-
scanf が無視されます
-
scanf関数について
-
C言語 逆ピラミッドの作り方
-
scanf("%s", buf);でスペースを...
-
Eclipseコンソール表示を、リセ...
-
VBでの日付入力値のフォーマッ...
-
enterでループ終了
-
UWSCで変数をキー入力
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
double型が正常に認識されてい...
-
プログラミング初心者です。 Py...
-
正負を反転させて出力するプロ...
-
Excel VBAで、Application.Inpu...
-
C言語について。
-
batプログラム上で文字列を入力...
-
*をユーザーが入力した数字の数...
-
cout関数を使っているのですが...
-
漢字のソートについて
-
数字以外が入力されたらエラー...
-
Userformの入力順序をタブオー...
-
ワードで文字を入力する時の変...
-
Linuxで入力待ちなしkeyread関...
-
java初心者です。入力されたの...
-
EDITコントロールで入力できる...
-
Eclipseコンソール表示を、リセ...
-
小数か整数かを判定する方法
-
C言語scanf_sで何故か2回入力に...
-
VB.NETで16進数+16進数や16進...
-
Linuxプログラミングで、キーボ...
おすすめ情報