4단원 숙제: 조건문과 반복문¶
출력 예측은 분기와 반복 횟수를 표시하세요. 직접 코딩은
Scanner를 사용합니다.
문제 1. 독립 if와 else if¶
다음 코드의 출력값을 쓰고, if 세 개를 else if 사슬로 바꾸면 결과가 어떻게 달라지는지 설명하세요.
int score = 85;
String grade = "F";
if (score >= 60) grade = "D";
if (score >= 70) grade = "C";
if (score >= 80) grade = "B";
System.out.println(grade);
문제 2. 범위의 빈틈 찾기¶
다음 코드가 의도대로 동작하지 않는 입력 범위를 찾고 고치세요.
if (age < 13) {
group = "child";
} else if (age > 13 && age < 20) {
group = "teen";
} else {
group = "adult";
}
문제 3. switch의 fall-through¶
month = 2일 때 출력과 그 이유를 쓰세요. break를 알맞게 넣어 계절 하나만 출력되게 고치세요.
switch (month) {
case 12: case 1: case 2: System.out.println("winter");
case 3: case 4: case 5: System.out.println("spring"); break;
default: System.out.println("other");
}
문제 4. for문의 흐름¶
다음 출력값을 쓰고, 반복문이 실제로 몇 번 몸체를 실행하는지 쓰세요.
for (int i = 1; i <= 10; i += 3) {
System.out.print(i + " ");
}
문제 5. 누적과 선택¶
1부터 30까지 중 3의 배수이면서 5의 배수가 아닌 수의 합을 구하는 코드를 작성하세요. for, if, %를 사용하세요.
문제 6. while과 입력 종료값¶
정수를 계속 입력받아 양수의 합을 출력합니다. 입력값 0은 종료 신호이며 합에 포함하지 않습니다. 아래 코드의 빈칸을 채우세요.
int sum = 0;
while (true) {
int n = sc.nextInt();
if (n == ______) ______;
if (n > 0) sum ______ n;
}
문제 7. continue와 break¶
다음 코드의 출력값을 쓰고, continue와 break가 각각 어느 반복을 건너뛰거나 끝내는지 설명하세요.
for (int i = 1; i <= 8; i++) {
if (i % 3 == 0) continue;
if (i > 6) break;
System.out.print(i + " ");
}
문제 8. 직접 코딩 - 입장료 계산기¶
나이와 입장 시각(0-23)을 입력받아 아래 규칙으로 입장료를 출력하세요.
- 13세 미만: 4000원
- 13세 이상 19세 이하: 7000원
- 그 외: 10000원
- 17시 이후 입장하면 위 금액에서 2000원 할인. 단, 최종 금액은 음수가 되지 않음
if-else if-else와 조건 연산자를 모두 사용하세요.
Age: 15
Hour: 18
Fee: 5000