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

1. [출제의도] 프로그램 작성 절차를 이해하고 있는가?

[정답] : ①

[정답 해설] 프로그램의 작성 절차는 다음과 같다.

디버깅 단계에서는 번역 단계와 모의 실행 단계에서 발생되는 오류를 수정하는 단계이며, 입력 설계 단계에서는 입력 데이터의 형식과 분량, 데이터 항목과 순서, 크기와 성격, 입력 매체 등을 결정한다.

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

[정답] : ③

[정답 해설] 주어진 순서도에서 보면 출구→벽→★표시 순으로 확인한다. 따라서 이를 그대로 해석해서 자동차의 이동 경로를 보면 다음과 같다.

출발 - 벽(★표시 있음, 좌회전) - 벽(★표시 없음, 우회전) - 벽(★표시 있음, 좌회전) - 출구 C

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

3. [출제의도] 알고리즘에 대하여 이해하는가?

[정답] : ④

[정답 해설] 알고리즘의 조건을 보면 다음과 같다.

∙ 명확성 : 각 명령들은 명확한 의미를 가져야 한다.

∙ 실제성 : 일정한 시간 내에 실행 가능해야 한다.

∙ 입력 : 입력 자료는 유한하여야 한다.

∙ 출력 : 적어도 하나 이상의 결과가 나와야 한다.

∙ 유한성 : 여러 단계를 거친 후에는 끝나야 한다.

또한 결과를 얻기 위한 알고리즘은 하나가 아니고, 결과가 나오면 모두 맞는 알고리즘이라 할 수 있다.  하지만 알고리즘에 따라서 10초 안에 결과를 내는 것과 1분 안에 결과를 내는 것처럼 수행 시간이 달라질 수 있다.

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

[정답] : ⑤

[정답 해설] 주어진 순서도는 구구단 3단을 출력하는 것이다.

따라서 3 6 9 12 15 18 21 24 27이 출력된다.

5. [출제의도] 소수를 구하는 알고리즘과 프로그램을 이해할 수 있는가?

[정답] : ⑤

[정답 해설] 2부터 10까지의 소수를 구하는 프로그램으로 그 과정은 다음과 같다.

1) 배열의 모든 요소값에 0을 기억시킨다.

2) 첨자를 2부터 시작하여 10까지 그 첨자의 배열 요소값이 0이면, 출력하고, 첨자의 배수인 배열 요소값에 1을 기억시킨다.

3) 위의 2) 단계 절차를 반복한다.

따라서 출력되는 수는 2 3 5 7이다.

6. [출제의도] 전역 변수와 지역 변수의 차이점을 이해하고 있는가?

[정답] : ②

[정답 해설] 전역(global) 변수는 함수 밖에서 선언하여 전체 프로그램에서 사용할 수 있는 변수이고, 지역(local) 변수는 하나의 블록에서만 정의되어 사용되는 변수이다. 또한 지역 변수와 전역 변수의 이름이 같으면 지역 변수가 유효하다. 따라서 func_a( )에서는 지역 변수 k의 값인 1이 출력되고, func_b( )에서는 전역 변수 k의 값인 3이 출력된다.

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

7. [출제의도] 연산자와 연산의 우선 순위를 이해하고 있는가?

[정답] : ④

[정답 해설]  a=a/e-f에서 e는 a 전체를 나누는 것이므로 a에 해당되는 “-b+c*d”를 괄호를 사용하여 우선 순위를 부여해야 한다.

8. [출제의도] 주어진 알고리즘을 이해하고 있는가?

[정답] : ③

[정답 해설] 주어진 알고리즘은 비교 횟수를 반으로 줄여가면서 최대값을 찾아내는 것이다. 따라서 비교 횟수는 8+4+2+1=15가 된다.

9. [출제의도] 다중 반복문을 처리할 수 있는가?

[정답] : ③

[정답 해설] 배바깥쪽 for문의 제어변수 m에 따른 안쪽 for문의 제어변수 n의 변화는 다음과 같다.

m=0 → n=0, 1, 2

m=1 → n=1, 2

따라서 배열 alpha의 첨자 m+n은 0, 1, 2, 2, 3이 된다. 그러므로 출력되는 문자는

abccd이다.

10. [출제의도] 주어진 알고리즘을 수식으로 표현할 수 있는가?

[정답] : ⑤

[정답 해설] b의 값은 a 값에 따라서 0과 1, 2가 되풀이 된다. 그러므로

가

에는 0,1,2가 되풀이 되는 나머지 연산자를 사용한 수식이 필요하다. 즉, b=a%3이 들어가야 한다.

11. [출제의도] 관계 연산자와 논리 연산자를 이해하고 있는가?

[정답] : ①

[정답 해설]

		C 언어	비주얼베이직 언어
논리합 연산자	두 식 중 하나라도 참이면 참의 값을 가지게 된다.	||	OR
논리곱 연산자	두 식 중 하나라도 거짓의 값이 있으면 거짓이 된다.	&&	AND

따라서 ㄱ, ㄴ의 경우 논리합으로 두식 중 하나만이라도 참이면 결과는 참이 된다. 그런데 B<C, B<=C가 참이므로 그 결과는 참이 된다.

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

12. [출제의도] 라이브러리 함수와 사용자 정의 함수에 대하여 이해하고 있는가?

[정답] : ⑤

[정답 해설] abs(x) 함수는 x의 절대값을 구하는 라이브러리 함수이다. 따라서 abs(a-b)는 a와 b의 차에 절대값을 구한다. 이 값을 c에 대입한 후 절대값을 구하여 c와 비교한 후 그 값이 더 크면 큰 값을 c에 대입하므로 c에는 가장 큰 절대값이 저장된다. 그런데 호출하는 곳에서 a[x], b[x]을 실인수로 넘겨주므로 결국 c에는 배열 a와 b의 같은 위치에 있는 요소 간의 차이가 가장 큰 값이 저장된다.

13. [출제의도] 반복 루프를 조건에 맞게 처리할 수 있는가?

[정답] : ②

[정답 해설] a>b인 경우만 반복문을 실행하므로 변수의 변화 과정을 보면 다음과 같다.

a	b	c	반복 조건
5	2	0	참
3	2	1	참
1	2	2	거짓

따라서 출력되는 a, c의 값은 1과 2이다.

14. [출제의도] 조건에 맞게 변수를 선언할 수 있는가?

[정답] : ②

[정답 해설] 각 항목별 올바른 변수 선언은 다음과 같이 해야 한다.

	C 언어	비주얼 베이직 언어
번호(num)	int num;	Dim num as Integer
이름(name)	char name[10];	Dim name as String
신장(height)	float height	Dim height as Single
몸무게(weight)	float weight	Dim weight as Single
체력급수(grade)	char grade	Dim grade as String

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

15. [출제의도] 조건에 알맞은 제어문을 선택할 수 있는가?

[정답] : ①

[정답 해설] 제어문 중에서 여러 문장 가운데 특정 조건을 만족하는 문장을 실행할 때 는 switch 문(비주얼 베이직 언어인 경우에는 Select - Case 문)을 사용한다.

16. [출제의도] 전역변수와 함수 호출 프로그램을 이해할 수 있는가?

[정답] : ④

[정답 해설]   C 언어 : sub_func() 함수는 주 프로그램에서 a=1부터 3까지 세 번 호출된다. 호출할 때 인수는 없다.

처음 실행되는 sub_func()함수에서 switch 제어문의 cnt 값은 전역 변수로 선언된 2가 된다. 그러므로 case 2로 이동하여 B를 출력하고 cnt의 값은 3으로 바뀐다.

두 번째 실행되는 sub_func()함수에서 switch 제어문의 cnt 값은 3이므로 case 3로 이동하여 C를 출력하고 cnt의 값은 1로 바뀐다.

세 번째 실행되는 sub_func()함수에서 switch 제어문의 cnt 값은 1이므로 case 3로 이동하여 A를 출력하고 cnt의 값은 2로 바뀐다.

따라서 전체 실행 결과는 BCA가 출력된다.

비주얼 베이직 언어 : sub_func() 서브 프로시저는 주 프로그램에서 a=1부터 3까지 세 번 호출된다. 호출할 때 인수는 없다.

처음 실행되는 sub_func() 서브 프로시저에서 Select Case 문의 cnt 값은 전역 변수로 선언된 2이므로 Case 2로 이동하여 B를 출력하고 cnt의 값은 3으로 바뀐다.

두 번째 실행되는 sub_func() 서브 프로시저에서 Select Case 문의 cnt 값은 3이므로 Case 3로 이동하여 C를 출력하고 cnt의 값은 1로 바뀐다.

세 번째 실행되는 sub_func() 서브 프로시저에서 Select Case 문의 cnt 값은 1이므로 Case 3로 이동하여 A를 출력하고 cnt의 값은 2로 바뀐다.

따라서 전체 실행 결과는 BCA가 출력된다.

17. [출제의도] 반복 루프를 조건에 맞게 처리할 수 있는가?

[정답] : ④

[정답 해설] a가 0이 아닌 경우만 반복문을 실행하므로 변수의 변화 과정을 보면 다음

과 같다.

a	b	출력	반복 조건
13	5	5	참
1	1	1	참
0			거짓

따라서 출력되는 것은 5  1이다.

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

18. [출제의도] 석차나 순위를 구하는 알고리즘을 이해하고 있는가?

[정답] : ⑤

[정답 해설] 주어진 프로그램은 석차를 구하는 프로그램이다. 즉 비교할 대상이 크면 1씩 증가시켜 그 값을 구하면 내림차순으로 한 순위나 석차가 된다. 석차가 들어간 배열 k의 값은 1, 6, 3, 5, 4, 2 순이다.

19. [출제의도] for문과 if문, 그리고 1차원 배열으로 이루어진 프로그램을 이해할 수 있는가?

[정답] : ③

[정답 해설] 주어진 프로그램은 배열 b1과 b2의 같은 위치에 있는 요소값이 서로 같으면 그 위치에 해당하는 배열 a의 요소값의 누적합을 구하는 프로그램이다.

따라서 같은 위치에 있는 값이 서로 같은 경우는 배열 첨자가 2와 3인 경우이므로 그 때의 배열 a의 요소값은 2와 3이다. 따라서 누적합을 구하면 5가 된다.

20. [출제의도] 2차 배열과 다중 for문을 처리할 수 있는가?

[정답] : ③

[정답 해설] 2차원 배열의 각 요소값을 다중 for 문과 if 문을 이용하여 구한다.

if a<1 인 경우는 a가 0인 경우이다. 따라서 m=1-a=1-0=1이 된다.

if a>2 인 경우는 a가 3인 경우이다. 따라서 m=a-2=3-1=1이 된다.

나머지 a의 경우인 1과 2인 경우에는 m=0이다.

if b<1 인 경우는 b가 0인 경우이다. 따라서 m=m+(1-b)=m+(1-0)=m+1이 된다.

if b>2 인 경우는 b가 3인 경우이다. 따라서 m=m+(b-2)=m+(3-2)=m+1이 된다.

나머지 b의 경우인 1과 2인 경우에는 m=0이다.

a의 변화에 따른 m의 값을 보면 다음과 같다.

a=0	1	1	1	1
a=1	0	0	0	0
a=2	0	0	0	0
a=3	1	1	1	1

b의 변화에 따른 m의 값을 보면 다음과 같다.

	b=0	b=1	b=2	b=3
a=0	1+1	1+0	1+0	1+1
a=1	0+1	0+0	0+0	0+1
a=2	0+1	0+0	0+0	0+1
a=3	1+1	1+0	1+0	1+1