for 文とネストの条件分岐の組み合わせ
Java練習問題 第4回では「繰り返し処理」についての問題を用意してあります。
「繰り返し処理」の解説はこちら
問題 7 難易度 ★★
String white =”□”;
String black = “■”;
上記二つの変数を用いて、以下の手順でヨコ縞模様を出力してください。
① ターミナルに「表示したいヨコ縞模様の一辺の大きさを入力してください。」と表示する。
② ターミナルで数値を入力してください。
③ 下記の実行例の要領で表示されるように出力してください。
実行例
表示したいヨコ縞模様の一辺の大きさを入力してください。
8
■■■■■■■■
□□□□□□□□
■■■■■■■■
□□□□□□□□
■■■■■■■■
□□□□□□□□
■■■■■■■■
□□□□□□□□
問題 7 解答
正解は、、、
public class Main_0307 {
public static void main(String[] args) {
String white = "□";
String black = "■";
System.out.println("表示したいヨコ縞模様の一辺の大きさを入力してください。");
int n = new java.util.Scanner(System.in).nextInt();
for (int i = 0; i < n; i++) { // n 行分の繰り返し
for (int j = 0; j < n; j++) { // n 列分の繰り返し
if (i % 2 == 0) { // 偶数行と奇数行で分岐処理
System.out.print(black);
} else {
System.out.print(white);
}
}
System.out.println();
}
}
}
問題 8 難易度 ★★
String white =”□”;
String black = “■”;
上記二つの変数を用いて、以下の手順でタテ縞模様を出力してください。
① ターミナルに「表示したいタテ縞模様の一辺の大きさを入力してください。」と表示する。
② ターミナルで数値を入力してください。
③ 下記の実行例の要領で表示されるように出力してください。
実行例
表示したいタテ縞模様の一辺の大きさを入力してください。
8
■□■□■□■□
■□■□■□■□
■□■□■□■□
■□■□■□■□
■□■□■□■□
■□■□■□■□
■□■□■□■□
■□■□■□■□
問題 8 解答
正解は、、、
public class Main_0308 {
public static void main(String[] args) {
String white = "□";
String black = "■";
System.out.println("表示したいタテ縞模様の一辺の大きさを入力してください。");
int n = new java.util.Scanner(System.in).nextInt();
for (int i = 0; i < n; i++) { // n 行分の繰り返し
for (int j = 0; j < n; j++) { // n 列分の繰り返し
if (j % 2 == 0) { // 偶数列と奇数列で分岐処理
System.out.print(black);
} else {
System.out.print(white);
}
}
System.out.println();
}
}
}
問題 9 難易度 ★★★
String white = “□”;
String black = “■”;
上記二つの変数を用いて、チェック模様を出力してください。
① ターミナルに「表示したいチェック模様の一辺の大きさを入力してください。」と表示する。
② ターミナルで数値を入力してください。
③ 下記の実行例の要領で表示されるように出力してください。
実行例
表示したいチェック模様の一辺の大きさを入力してください。
8
□■□■□■□■
■□■□■□■□
□■□■□■□■
■□■□■□■□
□■□■□■□■
■□■□■□■□
□■□■□■□■
■□■□■□■□
問題 9 解答
正解は、、、
public class Main_0309 {
public static void main(String[] args) {
String white = "□";
String black = "■";
System.out.println("表示したいチェック模様の一辺の大きさを入力してください。");
int n = new java.util.Scanner(System.in).nextInt();
for (int i = 0; i < n; i++) { // n 行分の繰り返し
for (int j = 0; j < n; j++) { // n 列分の繰り返し
if (i % 2 == j % 2) { // 行と列がどちらも奇数,またはどちらも偶数の場合は黒を出力
System.out.print(black);
} else {
System.out.print(white);
}
}
System.out.println();
}
}
}
for 文のネスト応用
問題 10 難易度 ★★★
掛け算九九表を以下の実行例のように罫線付きで出力するプログラムを作成してください。
実行例
+—-+—-+—-+—-+—-+—-+—-+—-+—-+
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
+—-+—-+—-+—-+—-+—-+—-+—-+—-+
| 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 |
+—-+—-+—-+—-+—-+—-+—-+—-+—-+
| 3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 |
+—-+—-+—-+—-+—-+—-+—-+—-+—-+
| 4 | 8 | 12 | 16 | 20 | 24 | 28 | 32 | 36 |
+—-+—-+—-+—-+—-+—-+—-+—-+—-+
| 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 |
+—-+—-+—-+—-+—-+—-+—-+—-+—-+
| 6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 |
+—-+—-+—-+—-+—-+—-+—-+—-+—-+
| 7 | 14 | 21 | 28 | 35 | 42 | 49 | 56 | 63 |
+—-+—-+—-+—-+—-+—-+—-+—-+—-+
| 8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 72 |
+—-+—-+—-+—-+—-+—-+—-+—-+—-+
| 9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 |
+—-+—-+—-+—-+—-+—-+—-+—-+—-+
問題 10 解答
正解は、、、
public class Main_0310 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 0; j < 9; j++) {
System.out.print("+----"); //横罫線
}
System.out.println("+");
for (int j = 1; j <= 9; j++) {
int num = i * j;
System.out.print("| "); //縦罫線
if (num < 10) {
System.out.print(" "); //表示数値が 10 未満の場合は桁揃え
}
System.out.print(num + " ");
}
System.out.println("|"); //右端の縦罫線
}
for (int j = 0; j < 9; j++) {
System.out.print("+----"); //下端の横罫線
}
System.out.println("+");
}
}
問題 11 難易度 ★★★
for 文の入れ子を用いて以下のような出力をしてください。
実行例
0 = 0
0+1 = 1
0+1+2 = 3
0+1+2+3 = 6
0+1+2+3+4 = 10
0+1+2+3+4+5 = 15
0+1+2+3+4+5+6 = 21
0+1+2+3+4+5+6+7 = 28
0+1+2+3+4+5+6+7+8 = 36
0+1+2+3+4+5+6+7+8+9 = 45
0+1+2+3+4+5+6+7+8+9+10 = 55
問題 11 解答
正解は、、、
public class Main_0311 {
public static void main(String[] args) {
for (int i = 0; i <= 10; i++) {
int sum = 0;
for (int j = 0; j <= i; j++) {
System.out.print(j);
if (i != j) {
System.out.print("+");
}
sum += j;
}
System.out.println(" = " + sum);
}
}
}
for 文のネスト応用 (番外編)
問題 12 難易度 ★★★
for 文の入れ子を用いないで以下のような出力をしてください。
実行例
0 = 0
0+1 = 1
0+1+2 = 3
0+1+2+3 = 6
0+1+2+3+4 = 10
0+1+2+3+4+5 = 15
0+1+2+3+4+5+6 = 21
0+1+2+3+4+5+6+7 = 28
0+1+2+3+4+5+6+7+8 = 36
0+1+2+3+4+5+6+7+8+9 = 45
0+1+2+3+4+5+6+7+8+9+10 = 55
問題 12 解答
正解は、、、
public class Main_0312 {
public static void main(String[] args) {
String msg = "0";
int sum = 0;
for (int i = 0; i <= 10; i++) {
System.out.println(msg + " = " + sum);
msg += "+" + (i + 1);
sum += (i + 1);
}
}
}
Java練習問題 第5回でも引き続き「繰り返し処理」から出題します。
コメント