2011학년도 직업탐구 6월 모의평가 해설지

[과목명 : 프로그래밍]

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

1. 정답 :⑤

[출제의도] : 프로그래밍 관련 용어에 대해 알고 있는가?

[해설]

명제	참/거짓	선물획득여부
어셈블리어는 고급언어이다.	거짓(어셈블리어는저급언어임)	선물획득 못함
베이직언어는 저급언어이다.	거짓(베이직언어는 고급언어임.)	선물획득 못함
컴파일러는 프로그램의 일부만 수정해도 다시 번역해야 한다.	참	선물획득
인터프리터는 프로그램을 실행할 때마다 한 줄씩 번역하여 실행한다.	참	선물획득

2. 정답 : ①

[출제의도] : 순서도를 올바르게 분석할 줄 아는가?

[해설] : “합격”을 출력하려면 'A가 참'이거나 'B>90이고, C>50'이어야 한다.

따라서 이것을 논리식으로 나타내면 C언어의 경우 “A || ( B > 90 && C > 50)”으로 나타낼 수 있으면 Visual Basic의 경우 “A Or ( B > 90 And C > 50)”이 된다.

3. 정답 :③

[출제의도] :알고리즘을 올바로 분석하여 알고리즘의 의도를 파악할 수 있는가?

[해설] ‘단계3’에서 'a > b'를 비교하여 큰 값을 k에 대입 한다. ‘단계4'에서 c와 k값을 비교하여 큰 값을 k에 대입하게 되므로, 결국 k에는 a,b,c 세 수 중에서 가장 큰 값이 저장되게 된다. 따라서 변수 k의 값이 의미하는 것은 가장 큰 최댓값이 된다.

4. 정답 : ⑤

[출제의도] : 조건에 맞는 코드를 작성할 수 있는가?

[해설] ‘카운트의 값이 5의 배수가 될 때 마다’ 포장 수량이 증가하게 되므로, 5로 나누어 나머지가 0이 되면 된다. 따라서 Count를 5로 나누어 나머지가 0인 코드를 작성하면 된다.

5. 정답 : ①

[출제의도] : 프로그램을 분석할 수 있는가?

[해설] 프로그램 소스에서 C언어의 경우 d[k[a]]값을, Visual Basic의 경우 d(k(a))값을 출력하게 된다. 따라서 배열 d에 있는 원소를 배열 k의 값을 첨자로 하여 출력하게 된다. 프로그램에서 출력되는 값은 ^-^;;이 된다.

6.정답 : ②

[출제의도] :자료형에 맞는 변수를 올바로 선언 및 자료값을 대입할 수 있는가?

[해설] name변수의 경우 문자형으로 선언해야 하며, licence의 경우 논리형으로 선언해 주어야 한다. 또한 age의 경우 정수형으로 선언해야 하며, phone의 경우 문자형으로 선언해 주어야 한다.

7.정답 :④

[출제의도] : 조건에 맞는 함수를 작성할 수 있는가?
[해설] 그래프에서 입력값이 양수/음수인 경우 모두  출력값은 양수가 되어야 한다.

따라서 양수값은 그대로 출력하고, 음수인 경우 양수로 바꿔주는 코드를 작성하면 된다.

8.정답 :②

[출제의도]: 건에 따라 자료를 분석할 수 있는가?

[해설] 주어진 자료를 갖고 조건에 따라 분석해 보면 상호 호감도의 값은 다음과 같다.

번호	호감도	->	<-	호감도의 합
①	철수-갑돌	2	4	6
②	영희-복순	4	4	8
③	복순-철수	2	4	6
④	갑순-영희	1	3	4
⑤	갑돌-갑순	4	2	6

따라서 친밀도가 가장 높은 경우는 ‘영희-복순’이가 된다.

9.정답 :③

[출제의도] : 순서도에 맞는 올바른 반복문을 작성할 수 있는가?

[해설] 순서도에서 ' c < n ' 인 동안 sum = sum + k, k = k + 2를 수행한 후 c = c +1을 수행하고 있다. 따라서 답지에 나와 있는 반복문 중 올바른 것은 ③번이 된다. 특히 ④의 경우 c의 값과 n의 값이 같은 경우도 수행하게 되므로 순서도에 나와있는 반복문의 조건에 위배되므로 정답이 될 수 없다.

10.정답 : ③

[출제의도] : 순서도의 출력결과를 알 수 있는가?

[해설] 0부터 4까지 1, 3, 5, 7, 9를 더하게 되므로 sum=25가 된다. 또한 c는 5가 되면 조건을 만족하지 않아 반복문을 종료하게 되므로 최종적인 c의 값은 5가 된다.

11.정답 : ④

[출제의도] : 조건에 맞는 논리식에 해당되는 문장을 만들 수 있는가?

[해설]버튼 A와 B를 모두 누르고, C가 1(깡통이 있는 경우)이 될 때 동작하게 된다. 따라서 A와 B,C모두 1인 경우 동작하게 되므로 &&(And)조건으로 연결되어야 한다.

12.정답 : ⑤

[출제의도] : 마방진의 합을 구할 수 있는가?

[해설] 마방진이란 행과 열의 합이 모두 같은 경우를 말한다. 여기서 a는 행을 나타내고 b는 열을 나타낸다. 따라서 처음시작은 0행 2열부터 시작하게 된다. 1을 3으로 나누었을 때 나머지가 1이 되므로 행의 값(a의 값)을 1증가시킨 위치에 1을 넣는다. 또한 c가 2인경우 행은 1감소하게 되고 열은 1증가하게 된다. 그런데 행이 1감소(a=0이 된 경우)된 경우 a=3을 넣어 주므로 3행 3열에 2의 값을 넣어주게 된다. c=3인 경우 행의 값을 1감소, 열을 1증가시키므로 a=2가 되고, b=4가 된다. 여기서 b값이 3보다 크게 되므로 b=1이 된다. 따라서 2행 1열에 3의 값을 넣어주게 된다. 이러한 방법으로 9까지 수를 넣어주면 ⑤와 같이 된다.

13.정답 :①

[출제의도] 소수를 구할 수 있는가?

[해설]1부터 10까지 소수를 구하는 프로그램이다. 이 프로그램에서는 소수의 정의에 따라 소수를 구하고 있는데, 1과 자기 자신 외에 나누어 지지 않는 경우를 이용하였다. 따라서 2, 3, 5, 7을 구하게 된다.

14. 정답 : ⑤

[출제의도] 프로그램을 분석할 수 있는가?

[해설]변수 a는 전역변수로 선언되어 있다. 또한 Fun_S()는 프로그램 실행 후 결과값을 반환하지 않는다.

15.정답 :②

[출제의도]프로그램의 실행결과를 알 수 있는가?

[해설]c = 3, a = 0을 이용하여 함수를 실행하고 있다. c의 값을 함수에 전달하여 k = 3이 된다. 반복문에 의해 ‘☆’와 ‘★’를 인쇄하게 된다. a=0이므로 ☆를 찍어주는 반복문에서는 m=0,1,2인 동안 인쇄하게 된다.  a=1인경우 ☆ m = 0,1인 동안 ☆을 인쇄하고, ★을 인쇄하는 반복문에서는 m = 0인동안 ★을 인쇄하게 된다. 따라서 이 프로그램의 실행결과는 ②와 같이 출력된다.

16.정답 :③

[출제의도]프로그램의 실행결과를 알 수 있는가?

[해설]배열b의 초기값은 다음과 같다.

0	1	2	3	4	5	6	7	8	9	10	11
0	0	0	0	0	0	0	0	0	0	0	0

b[a[k]]에 의해 배열 b는 아래와 같이 변한다.

첨자 5, 4, 9, 11의 위치에 각 각 1이 대입된다.

0	1	2	3	4	5	6	7	8	9	10	11
0	0	0	0	1	1	0	0	0	1	0	1

b[0]=1을 대입하므로 아래와 같이 된다.

0	1	2	3	4	5	6	7	8	9	10	11
1	0	0	0	1	1	0	0	0	1	0	1

프로그램에 의해 저장되는 값은 아래와 같다.

0	1	2	3	4	5	6	7	8	9	10	11
1	1	1	1	2	3	3	3	3	4	4	5

여기서 4, 3, 8,10의 값을 차례대로 출력되므로, 2, 1, 3, 4가 출력된다.

17.정답 : ②

[출제의도]프로그램을 분석할 수 있는가?

[해설] 배열 m과 n의 요솟값이 같을 때 b에 3씩 더해 주므로, b의 값은 6이 된다.

18.정답 :③

[출제의도] 프로그램을 분석할 수 있는가?

[해설] 임의의 값을 a에 입력하여 b에 더하는 프로그램이다. 만약 b의 값이 21이상이면 반복문을 종료하게 된다. 프로그램에서 입력문의 실행횟수를 저장하는  변수는 c가 된다.

19.정답 : ④

[출제의도] 프로그램을 분석할 수 있는가?

[해설] a와 b의 값이 같을 때 ‘*'을 인쇄하고, 같지 않을 때 ’#‘을 인쇄한다.

따라서 ④와 같이 출력된다.

20. 정답 :⑤

[출제의도] 프로그램을 분석할 수 있는가?

[해설] 배열c에 저장되어 있는 문자 중 대문자인 경우 아스키코드를 이용하여 소문자로 변환시킨다. 대문자를 소문자로 변환시킨 횟수를 변수 b에 저장한다. 따라서 b = 2가 된다. 문자열은 모두 소문자로 변환되어 출력되며 대문자로 변환된 횟수만큼 ‘♡’를 출력하므로 ⑤와 같이 된다.