섹션 1 switch-case문 기출문제-1 질문
안녕하세요.
맨 처음에 제가 혼자 풀었을 때는 정답이
DDBCD로 나왔습니다.
제가 풀이를 이런 과정으로 했는데요.
1) n의 0번 인덱스에 있는 73을 sum에 가산 -> 73/30=2 -> default에 있는 "D" 출력
2) n의 1번 인덱스에 있는 95를 sum에 가산 -> 168/30=5 -> default에 있는 "D" 출력
3) n의 2번 인덱스에 있는 82를 sum에 가산 -> 250/3=8 -> case 8부터 default까지의 "BCD" 출력
제 풀이대로 되지 않는 이유가 for문의 중괄호가 switch case문을 감싸고 있지 않아서 그런 건가요?
또, switch case문이 for문의 중괄호에 포함이 되면 제가 작성한 답이 출력이 되나요?
혼자서 이해해보려고 노력했는데 개념이 부족해서 이렇게 질문 올려봅니다. 감사합니다.
답변 1
1
안녕하세요,
말씀하신 대로 되려면 for 반복문 안에 switch문이 통째로 들어가야 합니다.
지금은 반복문이 모두 끝난 이후에 switch문을 만나기 때문에 sum이 정해져서 들어갑니다.
말씀하신 대로 매번 sum을 판단해서 넣으려면
전체를 다 반복문에 넣어서 한 번 반복될 때마다 switch문을 타서 출력하게 해야 합니다.
#include <stdio.h>
int main() {
int n[3] = {73, 95, 82}; // 배열 선언 및 초기화
int sum = 0; // sum을 0으로 초기화
// 배열 요소의 합을 계산
for (int i = 0; i < 3; i++) {
sum += n[i];
switch (sum / 30) {
case 10:
case 9:
printf("A");
case 8:
printf("B");
case 7:
printf("C");
default:
printf("D");
}
}
return 0;
}이렇게 되면 값이 DDBCD가 됩니다.
여기서 근데 주의하셔야 할 점이 있습니다. 만약 case 8 아래에 break;문이 있으면 어떻게 될까요?
#include <stdio.h>
int main() {
int n[3] = {73, 95, 82}; // 배열 선언 및 초기화
int sum = 0; // sum을 0으로 초기화
// 배열 요소의 합을 계산
for (int i = 0; i < 3; i++) {
sum += n[i];
// sum / 30에 기반한 스위치 문
switch (sum / 30) {
case 10:
case 9:
printf("A");
case 8:
printf("B");
break;
case 7:
printf("C");
default:
printf("D");
}
}
return 0;
}
이렇게 되면 DDB가 됩니다. 저 break문은 반복문 자체도 깨고 나오기 때문에 다음 반복이 진행되지 않습니다.
26년2회 실기기출은 언제쯤...
0
42
2
이론 공부법 요약본 버전 업데이트 문의
0
35
2
정처기 필기 준비할때 이 이론을 다시 외워도 될까요?
0
57
2
조건 반복문 질문: for 문 ?
0
66
1
정처기 26-2회. 9번 질문드립니다!
0
85
1
이론 보면서 질문이 있습니다.
0
82
2
정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문
0
93
2
유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)
0
153
2
262 정처기 실기 C언어코딩
0
50
1
정보처리기사 262 실기 Hash(해시) 질문
0
84
2
static 변수 질문입니다.
0
64
2
파이썬 4강 질문입니다.
0
73
2
모의고사 1회 3번문제
0
95
3
41강 30:10
0
69
2
이론 공부법 질문 있습니다.
0
94
2
부모의 생성자 관련 질문
0
70
2
시험지 문제에 필기해도 되나요?
0
92
3
41강 11:23
0
61
2
4강파이썬 질문입니다
0
58
2
try-catch 핸들러명
0
71
2
36강 3:48
0
69
2
35강 18:27
0
69
2
자식 코드 내 super() 생략
0
63
2
출력질문
0
80
2





