EBS i 직탐영역 : 프로그래밍 본수능(11월23일) 해설

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

[정답] : ①

[정답 해설] 센서 A, B 모두 참이면 펌프가 정지하므로 논리곱 조건이다. 논리곱 연산자는 C 언어에서 &&, 비주얼 베이직 언어에서는 And이다.

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

[정답] : ④

[정답 해설]

반복문에서 사용되는 제어 변수 b, c의 변화 과정을 보면 다음과 같다.

변수 b	변수 c	출력되는 ‘*’의 개수
0	1～2	2
1	1～6	6
2	1～4	4
3	1～2	2
4	1～4	4

3. [출제의도] 특정한 값이 나오는 횟수를 구하는 알고리즘을 이해하고 있는가?

[정답] : ③

[정답 해설] (가) - (마)에 들어갈 <보기>의 내용은 다음과 같다.

(가) 1부터 100까지 1씩 증가

(나) 난수 함수를 이용하여 난수 생성

(다) 1부터 6까지의 정수로 변환

(라) 3일 경우 a값 1씩 증가

(마) a 값을 100으로 나누기 <- 확률을 구하므로

EBS i 직탐영역 : 프로그래밍 본수능(11월23일) 해설

4. [출제의도] 조건문 if 문을 사용할 수 있는가?

[정답] : ④

[정답 해설] 주어진 순서도에서 탑승 인원을 나타내는 변수 person이 3 이상이면 통행료를 나타내는 변수 money에 0을 대입하고, 아니면 money에 2000을 대입한다.

따라서 이를 코드로 나타내면 다음과 같다.

C 언어	비주얼베이직 언어
if(person >= 3) money = 0; else money = 2000;	If(person >= 3) money = 0 Else money = 2000 EndIf

5. [출제의도] 문장으로 주어진 일의 처리 과정을 프로그램 코드로 나타낼 수 있는가?

[정답] : ①

[정답 해설] 매일 800원씩 모아 160,000이 되면 MP3를 살 수 있으므로 160,000이 될 때까지 날짜가 하루씩 증가할수록 800씩 더해주면 된다.

따라서 이를 코드로 나타내면 다음과 같다.

C 언어	비주얼베이직 언어
while(money<160000) money = money + 80; day++; }	Do While(money<160000) money = money + 80 day = day + 1 Loop

6. [출제의도] 제어문을 사용한 프로그램의 흐름을 이해할 수 있는가?

[정답] : ③

[정답 해설] 배열 x에 저장된 값이 0이상 60미만이면 배열 y에 1이 저장되고, 60이상 80미만이면 배열 y에 2가 저장되며, 80이상이면 3이 저장되므로 배열 y에 저장된 값은 2, 2, 3, 1, 3, 2가 된다. 따라서 이 값의 합을 구하면 13이다.

EBS i 직탐영역 : 프로그래밍 본수능(11월23일) 해설

7. [출제의도] 배열과 제어문, 함수를 사용하여 작성된 프로그램을 해석할 수 있는가?

[정답] : ②

[정답 해설] 호출된 함수 heater의 인수 tm이 22보다 작으면 1을 되돌려주고, 그렇지 않으면 0을 되돌려준다. 따라서 1이 되돌려지는 인수는 21, 18, 20이다. 그런데 조건문 if에서 ct[idx]가 1이어야 증가시키므로 인수 21인 경우에는 증가되지 않는다.

따라서 cnt값이 증가되는 경우는 배열 rm의 요소값이 18과 20인 경우뿐이다. 그러므로 출력되는 값은 2가 된다.

8. [출제의도] 순서도에서 사용되는 기호의 의미를 알고 있는가?

[정답] : ⑤

[정답 해설] 순서도에서 사용되는 기호의 의미는 다음과 같다.

명칭	기호	의미
처리		산술 연산, 데이터의 이동, 편집 등의 처리
입출력		데이터의 입출력 기능을 표시
초기화		처리 전의 준비 및 선언
비교․판단		주어진 조건을 비교, 판단하여 흐름을 결정
단말기		처리의 시작과 종료를 표시

9. [출제의도] 나머지 연산자를 활용할 수 있는가?

[정답] : ⑤

[정답 해설] 오른쪽부터 각 역의 지정값은 2진수의 자리값이다. 따라서 (가)에 들어갈 부분은 10진수를 2진수로 변환하는 과정에서 나오는 수이므로 주어진 변수 trn 값을 2로 나눈 나머지를 배열에 저장하면 된다.

EBS i 직탐영역 : 프로그래밍 본수능(11월23일) 해설

10. [출제의도] 10진수를 2진수로 변환하는 프로그램을 해석할 수 있는가?

[정답] : ④

[정답 해설] 10진수 23을 2진수로 표현하면 00010111이다. 따라서 열차가 정지하는 역은 1, 2, 3, 5 역이다.

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

[정답] : ②

[정답 해설] 연산자 우선 순위는 괄호, 산술 연산자, 관계 연산자, 논리 연산자 순이다.

ㄱ : 3 * (5+2) <= 100  →  21 <= 100 이므로 참

ㄴ : 3 > 8 || 4 + 7 < 9 → 3 > 8 || 11 < 9 이므로 거짓

(3 > 8 Or 4 + 7 < 9 → 3 > 8 Or 11 < 9 이므로 거짓)

ㄷ : 10 * 7 < 100 || 3 > 2 → 70 < 100 || 3 > 2 이므로 참

(10 * 7 < 100 Or 3 > 2 → 70 < 100 Or 3 > 2 이므로 참)

ㄹ : 100 > 150 && 10 < 20 거짓

(100 > 150 And 10 < 20 거짓)

12. [출제의도] 사용자 정의 함수를 이해하고 있는가?

[정답] : ④

[정답 해설] 함수를 호출할 때 인수 a, b,를 사용하였고, 이때 사용한 함수명은 sub_fun이면 처리 결과를 되돌려받는 변수는 ans이다.

따라서 ans=sub_fun(a, b)가 된다.

13. [출제의도] 논리 연산자를 이해할 수 있는가?

[정답] : ①

[정답 해설]  도형 A를 넣고, B를 넣은 후, D를 넣으면 그림과 같이 하단의 가로 줄을 모두 채울 수 있다.

EBS i 직탐영역 : 프로그래밍 본수능(11월23일) 해설

14. [출제의도] For 문을 처리 과정을 이해하고 있는가?

[정답] : ②

[정답 해설] 대화에서 말하고 있는 명령문은 반복문 for 문이다.

- C 언어

for(초기값 ; 조건식 ; 변화식)

{

처리 문장;

}

- 비주얼 베이직 언어

For 변수=초기값 To 최종값 [Step 증감값]

[처리 문장]

[Exit For]

Next 변수

15. [출제의도] 순서도를 작성할 수 있는가?

[정답] : ④

[정답 해설] (가)에 들어갈 조건은 무게가 다른 추를 골라내기 위한 조건이다. 따라서  한 개의 추만 무게가 1.5이고 나머지는 모두 1이므로 [A묶음의 무게]와 [추의 개수×1]가 같으면 찾고자하는 추가 없는 것이다.

16. [출제의도] 정렬 알고리즘을 이해하고 있는가?

[정답] : ①

[정답 해설] 주어진 프로그램은 배열의 요소값을 크기순으로 정렬하는 프로그램으로 선택 정렬 방법을 사용하였다. 선택 정렬은 잘못된 위치에 들어가 있는 원소를 찾아 그것을 올바른 위치에 집어넣는 원소 교환 방식으로 정렬한다. 즉, 주어진 프로그램에서는 가장 큰 값을 제일 앞에 놓고, 그 다음 큰 수를 찾아 두번째 순으로 놓는다. 따라서 반복문이 완료되면 51, 22, 12, 9, 5 순으로 정렬된다. 그러므로 k[3]+k[4]의 값은 14가 된다.

EBS i 직탐영역 : 프로그래밍 본수능(11월23일) 해설

17. [출제의도] 수와 관련된 알고리즘을 적용한 프로그램을 이해하고 있는가?

[정답] : ③

[정답 해설] 누적 곱을 구하는 프로그램으로 각 변수의 변화에 따른 변수 s에 기억되는 값을 보면 다음과 같다.

변수 a	변수 b	변수 s
1	1～1	1*1
2	1～2	1*1*2*2
3	1～3	1*1*2*2*3*3*3
4	1～4	1*1*2*2*3*3*3*4*4*4*4
5	1～5	1*1*2*2*3*3*3*4*4*4*4*5*5*5*5*5

18. [출제의도] 알고리즘에 대하여 알고 있는가?

[정답] : ③

[정답 해설] 알고리즘은 컴퓨터로 어떤 문제를 해결하기 위하여 필요한 자료들과 해결 절차를 알기 쉽게 기술하는 과정으로, 의사코드나 순서도, NS 차트 등으로 표현한다. 또한 다음과 같은 조건을 만족해야 한다.

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

② 유효성(실제성) : 일정한 시간 내에 실행 가능해야 한다.

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

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

⑤ 유한성 : 유한 번의 단계를 거치면 종료되어야 한다.

19. [출제의도] 배열과 함수을 이용한 프로그램을 해석할 수 있는가?

[정답] : ⑤

[정답 해설] 1 함수 fd()는 배열의 요소를 하나씩 뒤로 이동하는 것이다. 따라서 이 함수를 수행한 후 배열 a에 들어있는 요소는 다음과 같이 된다.

0	0	1	1	0

함수 fa(1)을 수행하면 배열 a의 첫번째 방에 1을 대입하므로 다음과 같이 변한다.

1	0	1	1	0

20. [출제의도] 사용자 정의 함수 프로그램을 이해할 수 있는가?

[정답] : ③

[정답 해설] X와 Y 조건이 모두 참이어야 Z가 참이 된다. 컴파일러 언어나 인터프리터 언어 모두 고급언어이며 컴파일러 언어로 작성된 코드의 잘못된 부분을 수정할 수 있으므로 디버깅이 가능하며, 컴파일러 언어는 목적 프로그램을 생성하고, 인터프리리터 언어는 목적 프로그램을 생성하지 않는다. 또한 C 언어는 컴파일러 언어이다.