Tips

C# 練習問題 11

C# 練習問題 11

C# 練習問題 11


C#のオリジナル練習問題です。
今回はwhile文からの出題です。

問題①


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

using System;
class Practice11_Q1 {
	static void Main(string[] args) {
		int num = 0;

		while (num < 5) {
			Console.Write(num);
		}
	}
}

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

A. 01234
B. 00000
C. 012345
D. 無限ループになる
E. コンパイルエラーが発生する

問題②


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

using System;
class Practice11_Q2 {
	static void Main(string[] args) {

		int num = 20;

		while (num > 10) {
			num = num - 3;
		}
		Console.Write(num);
	}
}

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

A. 20
B. 8
C. 11
D. 無限ループになる
E. コンパイルエラーが発生する

問題③


次のコードと出力結果を確認してください。

using System;
class Practice11_Q3 {
	static void Main(string[] args) {

		int count = 0;

		while (++count < 10) {
			if (count == 5) {
				break;
			}
			Console.Write(count);
		}
	}
}

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

A. 12346789
B. 1234
C. 6789
D. 無限ループになる
E. コンパイルエラーが発生する

問題④


次のコードと出力結果を確認してください。

using System;
class Practice11_Q4 {
	static void Main(string[] args) {

		int count = 0;

		while (count < 9) {
			if (count++ % 2 == 0) {
				continue;
			}
			Console.Write(count);
		}
	}
}

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

A. 2468
B. 13579
C. 123456789
D. 無限ループになる
E. コンパイルエラーが発生する

解答・解説を見る

解答・解説


while文は条件式が真の間、処理を繰り返し実行します。
while文の構文は以下の通りです。

[csharp] while(条件式) {
 // 処理
}
[/csharp]

条件式には、繰り返し実行するための条件をbool型で記述します。

例(以下のwhile文は5回ループします)

[csharp] int count = 0;
while (count < 5) {
count++;
}
[/csharp]

countの値が0から始まり、countが⑤未満の間、処理がループします。
処理に入るとがcount++が実行され、countの値は1増加します。
増加したcountが再び5と比較され、5未満であれば再び処理が実行されます。
countが5になった段階で条件式がfalseとなり、ループを抜けます。

以上が、典型的なwhile文のサンプルです。

問題①の解説


変数numの値は0から変わらないため、while文の条件式(num < 5)は常にtrueとなります。
その結果、0が出力され続ける無限ループとなるため、Dが正解です。

《答え》D

問題②の解説


変数numの値は、ループに入るたびにマイナス3されていきます。
numの値が20から3ずつ引かれ、numが8になったときに条件式(num > 10)がfalseとなりループを抜けます。
ループを抜けるとConsole.Write(num)でnumの値が出力され、その値は「8」となります。

《答え》B

問題③の解説


break文はその行以降の処理をスキップして、ループ自体を終了します。
本問では、変数countの値は条件式(++count < 10)が評価される度に1ずつ増加していきます。
(++countは、インクリメント演算子の前置です。countの値は1足された後に評価されます。)
ループしてる間はcountの値が1、2、3、…と出力され続け、countの値が5になるとif文に入りbreakが呼ばれループが終了します。
その結果、5以降の値は出力されないため、出力結果は「1234」となります。

《答え》B

問題④の解説


条件式が(count < 9)となっているため、countが9より小さい間ループします。
処理の中でcontinue文が実行されると、その行以降の処理をスキップして次のループに進みます。
if文の条件式(count++ % 2 == 0)は、countの値を2で割った余りが0の時にtrueとなり、式の評価後にcountの値が1増えます。if文に入るとcontinueが実行され、ループの先頭に戻ります。
if文に入らなかった時(つまりcountが2の倍数ではない時)のみ、Console.Write(count)による出力が行われますが、この時のcountの値は既に1足された後の値となっているため、出力結果は「2468」となります。

《答え》A

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

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

[Unity_317×90]

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

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

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

Recent News

Recent Tips

Tag Search