콘텐츠로 이동

4단원 숙제: 조건문과 반복문

출력 예측은 분기와 반복 횟수를 표시하세요. 직접 코딩은 Scanner를 사용합니다.

문제 1. 독립 ifelse 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. continuebreak

다음 코드의 출력값을 쓰고, continuebreak가 각각 어느 반복을 건너뛰거나 끝내는지 설명하세요.

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