Tips

C# 練習問題 10

C# 練習問題 10

C# 練習問題 10


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

問題①


以下の選択肢のうち、「0123456789」と出力されるものを2つ選びなさい

A. for(int i = 0; i <= 10; i++){Console.Write(i);}
B. for(int i = 0; i < 10; i++) {Console.Write(i);}
C. for(int i = 0; i <= 9; i++) {Console.Write(i);}
D. for(int i = 9; i >= 0; i--) {Console.Write(i);}
E. for(int i = 0; i <= 9; i--) {Console.Write(i);}

問題②


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

using System;

class Practice10_Q2 {
	static void Main(string[] args) {
		for (int i = 0; i < 10; i++) {
			if (i % 3 == 0) {
				continue;
			}
			if (i == 8) {
				break;
			}
			Console.Write(i);
		}
	}
}

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

A. 12457
B. 1245679
C. 012
D. 012457
E. 0124579

問題③


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

using System;

class Practice10_Q3 {
	static void Main(string[] args) {
		for (int i = 1; /* insert code ① */ i++) {
			for (int j = 1; /* insert code ② */ j++) {
				Console.Write(" * ");
			}
			Console.WriteLine();
		}
	}
}

出力結果

①と②にどのコードを挿入すれば、上図のように出力されますか。正しい組み合わせを1つ選択しなさい。

A. ①に i <= 5; ②に j <= 3;
B. ①に i < 3; ②に j < 5;
C. ①に i <= 3; ②に j <= 5;
D. ①に j <= 3; ②に i <= 5;
E. ①に i <= j; ②に j <= i;

問題④


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

using System;

class Practice10_Q4 {
	static void Main(string[] args) {
		for (int i = 1; i <= 5; i++) {
			for (/* insert code ① */) {
				if (/* insert code ② */) {
					Console.Write(" * ");
				} else {
					Console.Write("   ");
				}
			}
			Console.WriteLine();
		}
	}
}

出力結果

①と②にどのコードを挿入すれば、上図のように出力されますか。2つ選択しなさい。

A. ①に int j = 1; j <= 5; j++
B. ①に int j = 5; j >= 1; j--
C. ②に j <= i
D. ②に j >= i
E. ②に j == i
F. ②に j != i

解答・解説を見る

解答・解説


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

[csharp] for(式1; 条件式; 式2) {
 // 処理
}
[/csharp]

式1には、繰り返しをカウントするための変数を宣言します。
条件式には、繰り返すための条件をbool型で記述します。
式2には、繰り返しをカウントする変数の値を増減させる式を記述します。

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

[csharp] for (int i = 1; i <= 5; i++) {
// 処理
}
[/csharp]

iの値が1から始まり、iが5以下の間ループします。
ループが1回実行されると、i++によってiの値は1増加します。(2ループ目に入る直前のiの値は2となる)
増加したiが再び5と比較され、5以下であれば再び処理が実行されます。
iが6になった段階で、条件式がfalseとなって、ループを抜けます。

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

問題①の解説


for文を記述する場合、変数の初期値に注意することはもちろんですが、条件式が比較式である場合の「=」演算子の有無によってもループ回数が変わることに注意しましょう。
今回のfor文は、ループする度に値が出力されますので、「0123456789」を出力するために10回ループする必要があります。
選択肢のうち、iが0から始まって、10回ループしつつiが1ずつ増加するのはBCです。

選択肢Aは、ループが11回行われて「012345678910」と出力されてしまうため不正解です。
選択肢Dは、「9876543210」と出力されるため不正解です。
選択肢Eは、「i--」によって(i= -1、-2、…)となり、条件式(i <= 9)がfalseになることがないためループが終了せず無限ループとなります。よって不正解です。

《答え》B、C

問題②の解説


ループを途中で抜ける処理の問題です。
continueは、その行以降の処理をスキップして、次のループに進みます。
breakは、その行以降の処理をスキップして、ループ自体を終了します。

6行目のif文で「i % 3 == 0」とあるため、iを3で割った余りが0のとき、continueが行われます。
したがって、iの値が「0」「3」「6」「9」のとき、数値は出力されません。
また、10行目のif文の条件式が「i == 8」とあるため、iが8のときbreakが行われます。
したがって、iが「8」以降の値は出力されません。

よって、出力結果は「12457」となります。

《答え》A

問題③の解説


ネスト(入れ子)したfor文を使って、下図のように「 * 」を出力させる問題です。

for文の中にfor文を記述して、1行ごとに5つの「 * 」を3行出力させます。
行ごとのループを3回分外側のfor文で行い、「 * 」の出力を5回分内側のfor文で行います。
外側(変数がi)のfor文が3回ループするためには、iの値が1から3の間ループする必要があり、それを満たす条件式は「i <= 3;」となります。
また、内側(変数がj)のfor文が5回ループするためには、jの値が1から5の間ループする必要があり、それを満たす条件式は「 i <= 5;」となります。
①に j <= 3;  ②に i <= 5; を挿入することで、正しい出力結果を得ることができます。

《答え》D

問題④の解説


ネストしたfor文とif文を組み合わせて、下図のように「 * 」を出力させる問題です。
問題③と同様にfor文の2重ループで「 * 」を表示させますが、if文を使って「 * 」と「   」(空白)の出力を切り替えます。
行の番目は外側のループの変数iで表され、「 * 」または「   」の番目は内側のループの変数jで表されます。
本問では外側のfor文がfor(int i = 1; i <= 5; i++)と決まっていますので、それに合うように内側のfor文とif文を埋めていきます。

まず、出力結果は5行であり、これはiの値が1から5まで増えていくことで処理されています。
また、どの行でも「 * 」の数は行の番目と同じ数だけ出力されており、各行で「   」の後に「 * 」が出力され始めるのは、1行目では5番目、2行目では4番目以降…と続き、5行目では1番目以降となっています。
したがって、内側のループではjの値を5から1ずつ数を減らしていき、jの値が行の番目(変数i)以下になったときに「 * 」を出力し始めることで、題意の出力結果となります。

jの値を5から1ずつ減らすfor文は、選択肢B
jがi以下であるという条件式は、選択肢Cとなります

正解のソースコード

[csharp] using System;

class Practice10_Q4 {
static void Main(string[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >= 1; j–) {
if (j <= i) {
Console.Write(" * ");
} else {
Console.Write(" ");
}
}
Console.WriteLine();
}
}
}
[/csharp]

《答え》B、C

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

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

[Unity_317×90]

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

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

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

Recent News

Recent Tips

Tag Search