Tips

C# 練習問題 9

C# 練習問題 9

C# 練習問題 9


C#のオリジナル練習問題です。
今回はswitch文です。

問題①


次のコードを確認してください。

using System;

namespace Blog {
	class Practice9_Q1 {
		static void Main(string[] args) {

			int num = 3;

			switch (num) {
				case 1:
				Console.Write("春");
				break;

				case 2:
				Console.Write("夏");
				break;

				case 3:
				Console.Write("秋");
				break;

				case 4:
				Console.Write("冬");
				break;
			}
		}
	}
}

上記のコードをコンパイル、および実行したときの結果について、正しいものを1つ選択しなさい。

A. 春
B. 夏
C. 秋
D. 冬
E. 春夏秋冬
F. コンパイルエラー

問題②


次のコードを確認してください。

using System;

namespace Blog {
	class Practice9_Q2 {
		static void Main(string[] args) {

			string str = "dog";

			switch (str) {
				case "cat":
				Console.Write("にゃー");
				break;

				case "dog":
				Console.Write("わん");
				break;

				default:
				Console.Write("がーお");
				break;
			}
		}
	}
}

上記のコードをコンパイル、および実行したときの結果について、正しいものを1つ選択しなさい。

A. にゃー
B. わん
C. にゃーがーお
D. わんがーお
E. コンパイルエラー

問題③


次のコードを確認してください。

using System;

namespace Blog {
	class Practice9_Q3 {
		static void Main(string[] args) {

			string str = "cat";

			switch (str) {
				case "cat":
				Console.Write("にゃー");

				case "dog":
				Console.Write("わん");

				default:
				Console.Write("がーお");
				break;

			}
		}
	}
}

上記のコードをコンパイル、および実行したときの結果について、正しいものを1つ選択しなさい。

A. にゃー
B. わん
C. がーお
D. にゃーわんがーお
E. コンパイルエラー

問題④


次のコードを確認してください。

using System;

namespace Blog {
	class Practice9_Q4 {
		static void Main(string[] args) {

			string str = "cat";

			switch (str) {
				case "cat":

				case "dog":
				Console.Write("わん");
				break;
			}

			str = "dog";

			switch (str) {
				case "dog":

				case "cat":
				Console.Write("にゃーん");
				break;
			}
		}
	}
}

上記のコードをコンパイル、および実行したときの結果について、正しいものを1つ選択しなさい。

A. わん
B. にゃーん
C. わんにゃーん
D. 何も出力されない
E. コンパイルエラー

解答・解説を見る

解答・解説


switch文についての問題です。
switch文の構文は以下の通りです。

[csharp] switch (式) {
case 定数1:
 処理1; //(式の値が定数1のとき実行される)
 break;

case 定数2:
 処理2; //(式の値が定数2のとき実行される)
 break;

default:
 処理3; //(式の値が定数1でも定数2でもないとき実行される)
 break;
}
[/csharp] switch文は、式の値によって処理を分岐させます。
式の値とcaseの値が一致したところの処理が実行され、breakに到達するとswitch文が終了します。

C#では、式に使用できるデータ型は整数型かstring型です。
※ C# Ver.7からは式にオブジェクトを使用して、型による分岐も可能となりました。
default文は使用しないことも可能です。

問題①の解説


整数値を使った分岐です。
変数numが「3」であるため、case 1とcase 2はスルーされて、case 3の処理が実行されます。
case 3 で「秋」が出力されたのち、breakされて終了します。

《答え》C

問題②の解説


文字列を使用した分岐です。
変数strの値が「dog」であるため、case “dog” の「わん」が出力され、そのままbreakで終了します。
defaultは、どのcaseにも該当しなかった場合にのみ実行されるので、注意しましょう。

《答え》B

問題③の解説


C#では、フォールスルーが禁止されています。
フォールスルーとは、以下のようにbreakを記述せず、暗黙的に次のcase文に移行する記述方法です。

[csharp] switch (式) {
case 定数1:
 処理1;

case 定数2:
 処理2;
 break;

default:
 処理3;
 break;
}
[/csharp]

このとき式が定数1と一致すると、処理1が実行されたのちbreakがないためそのまま処理2が実行されます。
フォールスルーはJavaやC/C++では許されていますが、C#では禁止されています。(フォールスルー禁止則)
よってこの記述はコンパイルエラーとなります。

《答え》E

問題④の解説


前問のフォールスルー禁止則と似ていますが、このような記述は許可されています。
[csharp] switch (式) {
case 定数1:
case 定数2:
 処理1;
 break;

default:
 処理2;
 break;
}
[/csharp] 式が定数1もしくは定数2のどちらかと一致するとき、処理1が実行されます。
変数strが「cat」でも「dog」でも、それぞれのswitch文のcaseに該当するため、出力が実行されます。
最初のswitch文で「わん」が出力され、2つ目のswitch文で「にゃーん」が出力されます。

《答え》C

※ Console.Write()
()の中をコンソール画面に出力します。その際、改行は行われません。
改行を伴う出力はConsole.WriteLine()を使用します。

<<  < 次の問題  前の問題 > >>

[Unity_317×90]

ゲーム制作関連のオススメ連載リンク

とっても手軽なゲーム制作体験!
Unityゲーム開発基礎

実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発

Recent News

Recent Tips

Tag Search