EBS i 직탐영역 : 프로그래밍 모의고사(9월6일) 해설

1. [출제의도] 프로그램의 실행 과정을 이해하고 있는가?

[정답] : ②

[정답 해설] 컴파일러에 의해 원시 프로그램의 각 모듈이 기계어 코드로 번역되면 이들 각 모듈은 주기억장치에 적재되어 실행이 가능한 상태가 된다. 그러나 프로그램의 각 모듈은 서로 독립적으로 작성되고 번역되는 것이 일반적이기 때문에, 만일 한 모듈에서 다른 모듈을 호출하려 하거나 또는 다른 모듈 내에 정의된 변수들을 참조하여 작업을 수행하려면 이들 모듈 사이에 어떤 연관을 맺어주어야 한다. 이를테면 호출하려는 모듈이 어디에 위치하는지를 알아야 할 것이다. 이렇게 서로 독립적으로 작성되고 번역된 모듈 간에 연관을 맺어주는 작업을 링킹이라 하고 링킹 작업을 하는 프로그램을 링커라 한다. 따라서 (가)에 들어갈 내용은 링커이며, 이 링커의 역할은 여러 개의 목적 파일과 라이브러리 파일을 통합하여 연결시켜 준다.

또한 컴파일러가 목적 프로그램을 생성하면, 그 프로그램은 기억 장소에 넣고 실행시켜야만 한다. 이같이 목적 프로그램을 실행 가능한 형태로서 기억 장소에 올려놓는 작업을 하는 것이 로더이다.

2. [출제의도] 변수의 선언을 할 수 있는가?

[정답] : ①

[정답 해설] (가), (라)는 문자열로 선언해야 하며, (나)는 실수형으로 (다)는 긴정수형으로 선언해야 한다. 각 언어에서 사용하는 자료형을 살펴보면 다음과 같다.

종류	C 언어	비주얼 베이직 언어
정수형	int, long	Integer, Long
실수형	float, double	Single, Double
문자열	char 배열명[ ]	String

3. [출제의도] 알고리즘을 해석할 수 있는가?

[정답] :  ③

[정답 해설] 주어진 조건을 보면 하루에 2㎝씩 올라간다. 다만 5㎝을 올라간 후에 3㎝를 내려오므로 마지막에 5㎝ 이하가 남으면 유리컵을 넘어가므로 이 부분을 생각하면 쉽게 풀 수 있다.

8일이 되면 16㎝를 올라가고 9일에 0시부터 15시 사이에 5㎝를 올라가므로 유리컵을 빠져 나간다.

EBS i 직탐영역 : 프로그래밍 모의고사(9월6일) 해설

4. [출제의도] 연산자 우선순위에 대하여 알고 있는가?

[정답] : ②

[정답 해설]

주어진 연산식에서 연산자 우선순위에 따라 실행 순서를 알아보면 다음과 같다.

따라서 위의 순서에 따라 트리 구조로 표현한 것은 ②이다.

5. [출제의도] 객체 지향 프로그래밍 방식을 이해하고 있는가?

[정답] : ②

[정답 해설] 문제에서 주어진 설명은 객체 지향 프로그래밍 방식을 말한 것이다. <보기>에서 ㄱ은 절차 지향 프로그래밍 방식을 사용하는 프로그래밍 언어이고, ㄷ은 기계어를 사용한 프로그래밍 방식을 말한다.

ㄴ의 캡슐화, 추상화, 다형성은 객체 지향 프로그래밍 방식의 대표적인 특징이다.

- 캡슐화 : 작업 수행에 필요한 것은 객체 안에 숨기고 사용자에게는 인터페이스만 노출시킴

- 다형성 : 같은 기능이라도 객체에 따라 다르게 동작하는 것

- 추상화 : 구현할 필요 없는 부분은 생략하고 필요한 부분만을 나타내는 것

EBS i 직탐영역 : 프로그래밍 모의고사(9월6일) 해설

6. [출제의도] 변수의 영역과 사용자 정의함수를 사용할 수 있는가?

[정답] : ②

[정답 해설]

1) C 언어 :

- main 함수가 시작되고 main 함수 내의 지역 변수 x에는 400이 저장되고 사용자 정의함수 re_v를 호출한다.

- 호출된  re_v 함수에서 x값을 출력하는데 이 함수 내에는 특별히 선언한 지역 변수 x가 없으므로 전역 변수 x의 값을 출력한다. 따라서 300이 출력된다.

- 사용자 정의함수  re_v 함수가 종료되어 다시 main 함수로 돌아와 printf 함수를 실행하면 이때는 지역 변수 x가 있으므로 이 값 400이 출력된다.

- 이후 반복문 for 문을 처리하면 각각 100과 200이 출력된다.

2) 비주얼 베이직 언어 :

- 폼이 실행되면 Form_Activate() 이벤트 프로시저가 시작된다.

- 이 프로시저 내의 지역 변수 x에는 400이 저장되고 사용자 프로시저 re_v를 호출한다.

- 호출된  re_v 프로시저에서 다시 x에 300을 저장하고 x값을 출력하므로 300이 출력된다.

- 사용자 프로시저 re_v가 종료되어 다시 Form_Activate() 이벤트 프로시저로 돌아와 Print 문을 실행하면 이때는 이 프로시저에서 선언된 지역 변수 x가 있으므로 이 값 400이 출력된다.

- 이후 반복문 For 문을 처리하면 각각 100과 200이 출력된다.

7. [출제의도] 소수를 구하는 알고리즘을 이해하고 있는가?

[정답] : ③

[정답 해설] 주어진 알고리즘은 소수를 구하는 것이다. 주어진 알고리즘을 순서대로 해석하면 다음과 같다.

1) 단계 2에서 p=2, n=15

2) 단계 3에서 3 - 15 사이의 수 중 2의 배수에 해당되는 상자의 구슬이 제거되므로 2,3,5,7,9,11,13,15 상자의 구슬만 남는다.

EBS i 직탐영역 : 프로그래밍 모의고사(9월6일) 해설

3) 단계 4에서 p=3

4) 단계 5에서 조건 p<n이므로 단계 3으로 이동

5) 4 - 15 사이의 수 중 3의 배수에 해당되는 상자의 구슬이 제거되므로 9, 15 상자의 구슬이 제거되어 2,3,5,7,11,13 상자의 구슬만 남는다.

6) 4부터 15사이의 수에서 그 수보다 1이 큰 수에서 15 사이의 수 중에서 배수에 해당되는 상자의 구슬을 제거한다.(제거되는 상자의 구슬이 없음)

따라서 남아 있는 상자 번호를 보면  2,3,5,7,11,13이므로 이 합을 구하면 41이 된다.

8. [출제의도] 제어문의 실행 과정을 이해하고 있는가?

[정답] : ⑤

[정답 해설] 반복문의 실행에 따른 변수값의 변화를 보면 다음과 같다.

반복 횟수	gop	i	n	m
1회	36	4	5	9
2회	52	0	7	10
3회	52	-3	9	11

9. [출제의도] 순서도(NS 차트)를 해석할 수 있는가?

[정답] : ④

[정답 해설]

A는 1부터 10까지 1씩 증가하면서 반복한다.

A가 1부터 4까지는 “아니오”에 해당하는 문장이 실행되므로 M=1+2+3+4=10이 되고

A가 5이면 "예“에 해당하는 문장이 실행되므로 S=S+M/5=2를 실행하고 M은 0으로 된다.

다시 A가 1부터 4까지는 “아니오”에 해당하는 문장이 실행되므로 M=6+7+8+9=30이 되고 A가 10이면 "예“에 해당하는 문장이 실행되므로 S=S+M/5, 즉 S=2+30/5를 실행하고 S를 출력한 후 종료한다. 따라서 출력되는 S의 값은 8이다.

EBS i 직탐영역 : 프로그래밍 모의고사(9월6일) 해설

10. [출제의도] 최단 경로를 구할 수 있는가?

[정답] : ④

[정답 해설] 주어진 그림에서 최단 경로는 Ⓐ - Ⓒ - Ⓓ - Ⓔ - Ⓗ이다. 따라서 이 거리의 합은 11+7+9+10=37㎞이다. 이는 기본요금 구간 12㎞와 6㎞로 구분한 구간이 5개이다. 그러므로 지하철 요금은 1000+100*5=1500(원)이다.

11. [출제의도] 2차원 배열과 순서도를 해석할 수 있는가?

[정답] : ⑤

[정답 해설] 바깥쪽 반복문에서 제어 변수 n이 0부터 2까지 변하면 변수 p는 2부터 0으로 변한다. 따라서 2차원 배열 a는 마지막 3행부터 요소값이 저장된다.

(가)에는 열을 변화시키는 부분이 들어가야 하며, 제어 변수가 k이므로 0부터 3까지 1씩 증가시키면 된다.

(나)에는 b가 1부터 1씩 증가되므로 열을 나타내는 변수 s의 값은 3부터 0으로 1씩 감소되면 되므로 s=3-k가 된다.

12. [출제의도] 프로그래밍의 개념에 대하여 전반적으로 이해하고 있는가?

[정답] : ③

[정답 해설]  퀴즈에서 옳은 것은 1, 2, 4이다. 3에서 어셈블리어는 저급 언어이며, 하드웨어 중심 언어이므로 호환성이 적으며 순서도는 프로그래밍 언어의 종류와는 관계없다. 따라서 퀴즈 결과를 보면 다음과 같다.

퀴즈 번호	길동	영희	철수
1	○	×	×
2	×	○	○
3	○	×	×
4	○	○	×
5	×	○	×

EBS i 직탐영역 : 프로그래밍 모의고사(9월6일) 해설

13. [출제의도] 제어문을 이해하고 있는가?

[정답] : ⑤

[정답 해설]  다중 반복문의 실행 결과를 보면 다음과 같다.

< m, n의 값에 따른 w의 값 >

m의 값	n의 값			출력되는 값
	1	2	3
1	50	80	110	1 3
2	70	100	130	2 2
3	90	120	150	3 1

14. [출제의도] 정렬 프로그램을 이해하고 있는가?

[정답] : ③

[정답 해설]  주어진 프로그램은 오름차순으로 정렬하는 선택 정렬 프로그램이다.

그런데 이 프로그램은 정렬이 완료된 것이 아니라 3회전만 실시하는 프로그램이다.

프로그램의 실행에 따른 정렬 과정을 보면 다음과 같다.

1회전 : 23 42 65 34 67 38

2회전 : 23 34 65 42 67 38

3회전 : 23 34 38 65 67 42

15. [출제의도] 작성된 프로그램을 해석할 수 있는가?

[정답] : ①

[정답 해설] 제 앞부분의 다중 for문에서 배열 a에 저장된 요소값의 변화 과정을 표로 나타내면 다음과 같다. (제곱수를 구하는 알고리즘이다.)

첨자 초기값 m 값	0	1	2	3	4	5	6	7
	0	0	0	0	0	0	0	0
1	0	1	1	1	1	1	1	1
2	0	1	0	1	0	1	0	1
3	0	1	0	0	0	1	1	1
4	0	1	0	0	1	1	1	1
5	0	1	0	0	1	0	1	1
6	0	1	0	0	1	0	0	1
7	0	1	0	0	1	0	0	0

EBS i 직탐영역 : 프로그래밍 모의고사(9월6일) 해설

16. [출제의도] 순서도를 해석할 수 있는가?

[정답] : ③

[정답 해설]

k는 1부터 10까지 1씩 증가하면서 m은 홀수의 합을 구하고, n은 짝수의 합을 구한다.

따라서 m=1+3+5+7+9=25

n=2+4+6+8+10=30

s=30-25=5이다.

17. [출제의도] 배열과 제어문을 이해하고 있는가?

[정답] : ①

[정답 해설]

a 주어진 배열의 요소값이 서로 같으면 count의 값을 1씩 증가시키고 그 요소값을 sum에 누적하여 한다. 비교하는 요소값이 같은 경우가 2, 3, 4가 있으므로 count는 3이고 sum=2+3+4=9이다.

18. [출제의도] 2차원 배열의 첨자를 활용한 프로그램을 이해하고 있는가?

[정답] : ④

[정답 해설]

변수 k는 아래 음영 부분의 요소값을 누적한 합을 저장하는 변수이다.

1	2	3	4
5	6	7	8
9	10	11	12
13	14	15	16

또한 m[2][2]=11

m[3][3]=16이다.

EBS i 직탐영역 : 프로그래밍 모의고사(9월6일) 해설

19. [출제의도] 피보나치 수열을 이해하고 있는가?

[정답] : ①

[정답 해설] 피보나치 수열은 12세기 말 이탈리아 수학자 레오나르도 피보나치가 제안한 수열로 한 쌍의 토끼가 계속 새끼를 낳을 경우 몇 마리로 불어나는가를 숫자로 나타낸 수열이다. 이 숫자는 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, …가 된다. 모든 숫자가 앞선 두 숫자의 합이 된다. 일반적으로 피보나치 수열에서 임의의 항이 앞의 두 항의 합과 같은 수열이다.

20. [출제의도] 피보나치 수열을 이해하고 있는가?

[정답] : ②

[정답 해설] 문제의 프로그램에서는 초기값을 1이 주어져 있다. 따라서 a의 변화에 따라 nv값을 살펴보면 다음과 같다.

a	nv
1	1
2	2
3	3
4	5
5	8
6	13
7	21
8	34
9	55
10	89