프로그래밍기능사 필기 · 프로그래밍 언어 과목
AI 작성 · 운영진 검수 전프로그래밍기능사 C·자바 코드 읽기 핵심정리
- 중요도
- ★★★★★ (5 / 5)
- 출제 비중
- 프로그래밍 언어 15문항 중 약 6문항 (40%)
C 언어와 자바의 짧은 코드를 읽고 실행 결과를 구합니다.
📖 C·자바 코드 읽기 개념 정리 보기 →C·자바 코드 읽기, 이것만은 꼭 외우세요
- 반복문은 변수 값이 바뀌는 과정을 표로 적어 따라갑니다.
- C 의 배열 첨자는 0부터 시작합니다.
C·자바 코드 읽기 대표 문제 7개
예상문제검수 완료프로그래밍 언어 › C·자바 코드 읽기★★★★★
문제 1. 다음 C 프로그램의 출력 결과는? int s = 0; for (int i = 1; i <= 5; i++) s += i; printf("%d", s);
- ① 5
- ② 10
- ③ 6
- ④ 15
▼ 정답과 해설 보기▲ 정답과 해설 접기
정답: ④ 15
핵심: for 문으로 1부터 5까지 더하면 15
i 가 1부터 5까지 바뀌면서 s 에 차례로 더해집니다.
- s = 0 + 1 = 1
- s = 1 + 2 = 3
- s = 3 + 3 = 6
- s = 6 + 4 = 10
- s = 10 + 5 = 15
- 출력: 15
틀린 선지
- ① 5: 마지막 i 값만 넣은 것입니다. s += i 는 계속 더해 나갑니다.
- ② 10: 1부터 4까지만 더한 값입니다. 조건이 i <= 5 이므로 5 도 더합니다.
- ③ 6: 1부터 3까지만 더한 값입니다.
예상문제검수 완료프로그래밍 언어 › C·자바 코드 읽기★★★★★
문제 2. 다음 C 프로그램의 출력 결과는? int a[5] = {1, 2, 3, 4, 5}; printf("%d", a[2]);
- ① 4
- ② 2
- ③ 1
- ④ 3
▼ 정답과 해설 보기▲ 정답과 해설 접기
정답: ④ 3
핵심: C 배열의 첨자는 0부터 시작한다
C 의 배열 번호(첨자)는 0부터 시작합니다.
- a[0] = 1, a[1] = 2, a[2] = 3
- 출력: 3
틀린 선지
- ① 4: a[3] 의 값입니다.
- ② 2: 배열 번호를 1부터 센 경우입니다. C 배열은 0번부터 시작합니다.
- ③ 1: a[0] 의 값입니다.
예상문제검수 완료프로그래밍 언어 › C·자바 코드 읽기★★★★★
문제 3. 다음 C 프로그램의 출력 결과는? int i = 0, c = 0; while (i < 10) { i += 3; c++; } printf("%d %d", i, c);
- ① 12 3
- ② 12 4
- ③ 10 4
- ④ 9 3
▼ 정답과 해설 보기▲ 정답과 해설 접기
정답: ② 12 4
핵심: while 문은 조건이 거짓이 될 때까지 반복한다
반복할 때마다 i 는 3 늘고 c 는 1 늘어납니다.
- 1회: i = 3, c = 1
- 2회: i = 6, c = 2
- 3회: i = 9, c = 3 (9 < 10 이므로 계속)
- 4회: i = 12, c = 4 (12 < 10 이 거짓이므로 멈춤)
- 출력: 12 4
틀린 선지
- ① 12 3: 반복 횟수 c 는 4 입니다.
- ③ 10 4: i 는 3씩 늘어나므로 10 이 될 수 없습니다.
- ④ 9 3: i 가 9 일 때도 9 < 10 이 참이므로 한 번 더 반복합니다.
예상문제검수 완료프로그래밍 언어 › C·자바 코드 읽기★★★★★
문제 4. 다음 C 프로그램의 출력 결과는? int a = 5, b; b = a++; printf("%d %d", a, b);
- ① 5 6
- ② 6 5
- ③ 5 5
- ④ 6 6
▼ 정답과 해설 보기▲ 정답과 해설 접기
정답: ② 6 5
핵심: a++ 는 값을 먼저 쓰고 나중에 1 을 더한다
a++ (후위 증가)는 지금 값을 먼저 쓰고, 그다음에 a 를 1 늘립니다.
- b = a++ → b 에 지금 값 5 가 들어감
- 그다음 a 가 1 늘어 6
- 출력: 6 5
참고: ++a (전위 증가)였다면 먼저 6 으로 만든 뒤 넣으므로 b 도 6 이 됩니다.
틀린 선지
- ① 5 6: a 와 b 의 값이 바뀌었습니다.
- ③ 5 5: a 는 a++ 로 1 이 늘어 6 이 됩니다.
- ④ 6 6: a++ 는 값을 먼저 넘겨준 뒤 1 을 더합니다. b 에는 5 가 들어갑니다.
예상문제검수 완료프로그래밍 언어 › C·자바 코드 읽기★★★★★
문제 5. 다음 자바 코드의 출력 결과는? int x = 10; x += 5; x *= 2; System.out.println(x);
- ① 30
- ② 20
- ③ 15
- ④ 25
▼ 정답과 해설 보기▲ 정답과 해설 접기
정답: ① 30
핵심: x += 5 는 x = x + 5, x *= 2 는 x = x * 2
복합 대입 연산자는 계산한 결과를 다시 그 변수에 넣습니다.
- x = 10
- x += 5 → x = 10 + 5 = 15
- x *= 2 → x = 15 × 2 = 30
- 출력: 30
틀린 선지
- ② 20: x += 5 를 빠뜨리고 10 × 2 만 계산한 값입니다.
- ③ 15: x *= 2 를 빠뜨린 값입니다.
- ④ 25: 곱하기 대신 10 + 5 + 10 처럼 계산한 값입니다.
예상문제검수 완료프로그래밍 언어 › C·자바 코드 읽기★★★★★
문제 6. 다음 자바 코드의 출력 결과는? int n = 2, s = 0; switch (n) { case 1: s += 1; case 2: s += 2; case 3: s += 3; break; default: s += 10; } System.out.println(s);
- ① 2
- ② 5
- ③ 6
- ④ 15
▼ 정답과 해설 보기▲ 정답과 해설 접기
정답: ② 5
핵심: switch 문은 break 를 만날 때까지 아래 case 를 계속 실행한다
switch 문은 맞는 case 부터 시작해 break 를 만날 때까지 아래로 계속 실행합니다.
- n = 2 이므로 case 2 부터 시작: s = 0 + 2 = 2
- break 가 없으니 case 3 실행: s = 2 + 3 = 5
- break 를 만나 switch 를 빠져나감
- 출력: 5
틀린 선지
- ① 2: case 2 에 break 가 없으므로 case 3 까지 이어서 실행됩니다.
- ③ 6: case 1 은 건너뛰고 case 2 부터 시작합니다.
- ④ 15: case 3 의 break 에서 멈추므로 default 는 실행되지 않습니다.
예상문제검수 완료프로그래밍 언어 › C·자바 코드 읽기★★★★★
문제 7. 다음 C 프로그램의 출력 결과는? int a[3] = {10, 20, 30}; int *p = a; printf("%d", *(p + 2) - *p);
- ① 30
- ② 2
- ③ 20
- ④ 10
▼ 정답과 해설 보기▲ 정답과 해설 접기
정답: ③ 20
핵심: 포인터 p + 2 는 배열의 두 칸 뒤 원소를 가리킨다
배열 이름 a 는 첫 원소의 주소입니다. 그래서 p 는 a[0] 을 가리킵니다.
- *p = a[0] = 10
- p + 2 는 두 칸 뒤 a[2] 의 주소 → *(p + 2) = 30
- 30 - 10 = 20
- 출력: 20
틀린 선지
- ① 30: *p 를 빼지 않은 값입니다.
- ② 2: 주소의 차이가 아니라 주소가 가리키는 값끼리 뺍니다.
- ④ 10: *(p + 1) - *p 를 계산한 값입니다.
직접 풀어서 확인해 보세요.