프로그래밍 정답

1	②	2	⑤	3	⑤	4	③	5	②
6	③	7	①	8	③	9	①	10	②
11	③	12	①	13	⑤	14	④	15	④
16	②	17	②	18	④	19	④	20	⑤

해 설

1. [출제의도] 저급언어의 특징과 종류에 대해 알고있는가를 묻는 문제이다.

저급언어의 종류에는 기계어와 어셈블리어가 있으며, 고급언어에는 포트란, C언어, 베이식, 코볼, 비주얼베이식, 비주얼C, 델파이 등이 있다.

2. [출제의도] 순서도를 통해 while 문과, do~while 문의 차이점을 묻는 문제이다.

while(While~Wend)문은 주어진 조건이 거짓일 경우에 반복문 내용이 한 번도 실행되지 않을 수 있으나 do~while(Do~Loop While)문은 주어진 조건이 거짓이어도 do(Do) 아래에 있는 반복문이 반드시 한번은 실행된다.

[오답풀이] ①,②주어진 순서도의 조건 비교는, if문을 사용하지 않고 while 또는 do~while문의 조건식을 이용해도 된다. ③실행 속도는 주어진 조건에 따라 달라지므로 제어문의 형태와는 관계가 없다.

3. [출제의도] 사용자 정의함수가 포함되어있는 프로그램의 실행 순서를 묻는 문제이다.

모든 프로그램은 주함수가 우선적으로 실행되며 주함수에 포함된 명령어들이 순서적으로 실행된다.

4. [출제의도] 변수의 선언규칙을 알고 있는가를 묻는 문제이다.

변수명으로는 영문자, 숫자, 밑줄(_), 특수문자 등을 사용할 수 있으며, 첫글자는 영문자를 사용해야 한다.(단, C언어는 밑줄도 가능) 또한 예약어(for)는 변수명으로 사용할 수 없다.

5. [출제의도] 관계, 산술, 논리 연산자의 우선 순위에 따라 수식을 분석할 수 있는지를 묻는 문제이다.

산술 연산자가 논리 연산자보다 연산자 우선 순위가 높으므로 a<b이고 a+b>5인 경우에 한해서 "True"를 출력한다. 그러므로 a와 b값을 비교하여 b가 a보다 크고, a+b가 5보다 큰 입력 값을 갖는 a=3, b=4인 경우 "True"를 출력한다. 나머지는 모두 아무런 내용이 출력되지 않는다.

6. [출제의도] 주어진 조건을 논리 연산자를 이용하여 표현할 수 있는지를 묻는 문제이다.

A와 B는 둘 중에 하나를 만족해야 하므로 ||(Or)연산을, (A, B) 및 C는 모두 만족해야 하므로 &&(And) 연산을 수행해야 한다.

[오답풀이] A와 B가 우선적으로 연산이 수행되어야 하므로 A와 B의 조건은 괄호를 사용하여 우선 순위를 표시해야 한다.

7. [출제의도] 제어문(switch)의 기본적인 형식과 동작을 이해하고 분석할 수 있는지를 묻는 문제이다.

cnt 값이 2이므로 switch(Select)문의 선택값이 2가 되므로 case 2의 내용이 실행된다.

[오답풀이] C언어인 경우 break문이 있으므로 조건에 맞는 case문의 내용만 실행하고 제어문을 빠져나간다. 그러므로 출력 결과로 ABC를 가질 수 없다.  비주얼 베이식의 경우는 break를 사용하지 않는다.

8. [출제의도] while문을 이용하여 1에서 20까지의 자연수 중 3의 배수의 합을 구할 수 있는 지를 묻는 문제이다.

while(While~Wend)문 안에서 제어 변수의 값이 3씩 증가되어야 하므로 a=a+3이 수행되어야 한다.

[오답풀이] a=sum+3을 입력하면 sum의 값으로 처음 두개의 실행 결과는 조건을 만족하는 연산을 수행하지만, 3번째 실행부터는 조건을 만족하지 않는 연산이 수행된다.

9. [출제의도] 두 수를 교환하는 알고리즘을 이해하는 지를 묻는 문제이다.

초기에는 a=30, b=40이 저장된다.

ⅰ) a=a+b=30+40=70이 된다.

ⅱ) b=a-b=70-40=30이 된다.

ⅲ) a=a-b=70-30=40이 된다.

그러므로 a=40, b=30이 저장된다. 위 알고리즘은 변수 a, b의 값을 서로 교환하는 것과 같다.

10. [출제의도] 순서도를 정확하게 해석할 수 있는지를 묻는 문제이다.

반복문이 한번 수행될 때마다 m의 값이 3씩 줄어들면서 c의 값은 1씩 증가한다. 그러므로 주어진 조건이 m>=k 만족하는 반복 회수는 3이된다. 결과적으로 m=1, c=3, k=3이 저장된다.

11. [출제의도] 배열에 저장되어 있는 자료를 for문과 if문을 이용하여 검색할 수 있는지를 묻는 문제이다.

입력 받은 데이터와 같은 값이 들어있는 배열의 첨자 위치를 찾는 프로그램이다. 입력 값이 6이므로 6에 해당하는 배열 첨자의 위치인 4가 출력된다.

12. [출제의도] 아스키코드 관련 구문을 이해하고 이를 프로그램에 활용할 수 있는지를 묻는 문제이다.

아스키 코드는 'a','b', ~ 'z' 순서로 코드값이 할당되므로 'c'와 'a'의 차는(간격) 2가 된다. 그러므로 'c'-'a'(Asc("c")-Asc("a"))는 2가 출력된다.

13. [출제의도] 3개의 인수를 받아 평균을 구하여 출력하는 사용자 정의 함수를 이해하고 문제 해결에 활용할 수 있는지를 묻는 문제이다.

kk함수로 a, b, 5의 인수값이 전달되며, kk 함수는 이를 변수 x, y, z로 넘겨 받는다. 그러므로 kk 함수의 변수 x=3, y=4, z=5가 된다.

[오답풀이] kk함수는 3개의 인수를 변수 x,y,z으로 받아 평균값을 구하므로, 받는 값의 인수 순서를 변경하여도 같은 연산을 수행한다. 그러므로 출력값이 같게 된다.

14. [출제의도] 사용자 정의 함수를 이용하여 정의된 수식을 분석할 수 있는 능력이 있는지를 묻는 문제이다.

m함수가 넘겨받은 인수의 제곱값을 연산한 후 돌려주므로 주함수는 1부터 4까지 제곱값의 합이 수행된다.

15. [출제의도] 인터프리터, 언어번역  방식의 특징과 관련된 언어의 종류를 알고 있는지를 묻는 문제이다.

인터프리터 방식은 원시 프로그램을 한 문장씩 가져와서 번역한 후 실행하는 언어번역 방식이다. 그러므로 제시된 순서도의 설명은 인터프리터 방식을 의미한다. 이러한 인터프리터 방식을 사용하는 프로그래밍 언어에는 Basic, Lisp, 프롤로그가 있다.

16. [출제의도] 나머지 연산자의 특징을 이해하고, 이를 실전에 활용할 수 있는가를 평가하는 문제이다.

번호(num)를 6으로 나누어 나머지 값을 구하여야 하므로 p=num%6(p=num Mod 6)이 된다.

[오답풀이] ⑤ 학생의 출석 번호가 5이하인 경우에는 조건을 만족하여 올바른 결과를 출력하지만, 5를 초과하면 다른 결과가 출력된다.

17. [출제의도] 배열, do, switch문으로 구성된 실전 프로그램의 해석 능력을 묻는 문제이다.

집안청소(1)는 시간당 용돈이 2000원이고, 심부름(2)는시간당 용돈이 1000원이므로, 2000*1+1000*3의 금액 즉, 5000이 출력된다.

18. [출제의도] 차량 주차관리 시스템을 통해 일의 순서와 방법등을 논리적으로 분석할 수 있는 능력이 있는지를 묻는 문제이다.

자동차를 순서적(㉠㉡㉢)으로 꺼내기 위해서는 다음 과정을 수행하는 명령을 주어야 한다.

ⅰ) 서쪽차 2대를 동쪽으로 이동(move_E, move_E)

ⅱ) 서쪽차 1대를 출구로 꺼냄(pop_W)

ⅲ) 동쪽차 1대를 서쪽으로 이동(move_W)

ⅳ) 동쪽차, 서쪽차 순으로 2대를 꺼냄(pop_E, pop_W)

19. [출제의도] 배열과 이중 for문을 이용하여 두 개의 배열에 주어진 공통 자료를 검색하는 프로그램을 분석할 수 있는지를 묻는 문제이다.

두 개의 배열에 공통으로 들어있는 자료는 1, 3, 5가 된다. 이중 for문에 의해 배열 x의 각 요소에 대하여 y의 각 요소를 비교하고 다시, if문에 의해서 값이 동일하면 출력한다.

20. [출제의도] 개선된 버블정렬을 이용하여 오름차순으로 정렬하는 프로그램을 분석할 수 있는지를 묻는 문제이다.

일반적으로 버블정렬은 이웃하는 2개의 요소값을 비교하여 크기를 바꾸게 된다. 그러나 일반적인 버블정렬은 더 이상 정렬할 필요가 없는 경우에도 불필요하게 비교를 하게 된다. 이를 개선하기 위해서 flag 변수를 사용하여 정렬의 속도를 개선할 수 있다.

[오답풀이] ①변수 k의 최종값은 2이다. ②개선된 버블정렬 방법이다. ③ 오름차순으로 정렬한다. ④ while문은 총 3회 실행된다.