63. 다음 C언어 프로그램이 실행되었을 때, 실행 결과는?
① 30 ❷ 60
③ 80 ④ 120
<해설>
C 프로그램 실행 결과 분석
📌 주어진 코드
#include <stdio.h>
struct st {
int a;
int c[10];
};
int main(int argc, char *argv[]) {
int i = 0;
struct st ob1;
struct st ob2;
ob1.a = 0;
ob2.a = 0;
// 첫 번째 for문: 배열 초기화 및 값 저장
for(i = 0; i < 10; i++) {
ob1.c[i] = i;
ob2.c[i] = ob1.c[i] + i;
}
// 두 번째 for문: 특정 인덱스의 값만 누적
for(i = 0; i < 10; i += 2) {
ob1.a = ob1.a + ob1.c[i]; // ob1.a에 ob1.c[i]의 짝수 번째 인덱스 값 누적
ob2.a = ob2.a + ob2.c[i]; // ob2.a에 ob2.c[i]의 짝수 번째 인덱스 값 누적
}
printf("%d", ob1.a + ob2.a);
return 0;
}
1️⃣ 첫 번째 for 루프 (배열 값 초기화)
for(i = 0; i < 10; i++) {
ob1.c[i] = i;
ob2.c[i] = ob1.c[i] + i;
}
- ob1.c[i] = i; → ob1.c 배열에는 0~9까지의 값이 저장됨.
- ob2.c[i] = ob1.c[i] + i; → ob2.c[i] = i + i = 2 * i;
i ob1.c[i] ob2.c[i]
0 | 0 | 0 |
1 | 1 | 2 |
2 | 2 | 4 |
3 | 3 | 6 |
4 | 4 | 8 |
5 | 5 | 10 |
6 | 6 | 12 |
7 | 7 | 14 |
8 | 8 | 16 |
9 | 9 | 18 |
2️⃣ 두 번째 for 루프 (짝수 인덱스 값 누적)
for(i = 0; i < 10; i += 2) {
ob1.a = ob1.a + ob1.c[i]; // ob1.a 누적
ob2.a = ob2.a + ob2.c[i]; // ob2.a 누적
}
- i는 0, 2, 4, 6, 8에서 실행됨.
- ob1.a와 ob2.a에 각 ob1.c[i]와 ob2.c[i] 값이 누적됨.
각 값의 누적
- ob1.a = 0 + 0 + 2 + 4 + 6 + 8 = 20
- ob2.a = 0 + 0 + 4 + 8 + 12 + 16 = 40
3️⃣ 최종 결과
printf("%d", ob1.a + ob2.a);
- ob1.a + ob2.a = 20 + 40 = 60
- 출력 결과: 60
✅ 정답: ② 60
선택지 값 설명
① 30 | ❌ | 계산 값보다 작음 |
② 60 | ✅ | 올바른 결과 |
③ 80 | ❌ | 잘못된 합산 |
④ 120 | ❌ | 두 배로 잘못 계산 |
💡 결론
📌 짝수 인덱스(0, 2, 4, 6, 8)에서만 누적하는 점이 핵심!
📌 ob1.a = 20, ob2.a = 40이므로 최종 결과는 60
✅ 정답: ②
반응형
'기출문제 > 정보처리기사' 카테고리의 다른 글
2022년 2회 정보처리기사 기출문제 65번 (0) | 2025.02.26 |
---|---|
2022년 2회 정보처리기사 기출문제 64번 (0) | 2025.02.26 |
2022년 2회 정보처리기사 기출문제 62번 (0) | 2025.02.26 |
2022년 2회 정보처리기사 기출문제 61번 (0) | 2025.02.26 |
2022년 2회 정보처리기사 기출문제 60번 (0) | 2025.02.26 |