1. 그림은 스마트폰용 인공지능 비서 시스템 개발을 위한 회의 모습이다. 이에 대한 설명으로 옳은 것은?

2012학년도 10월 고3 전국연합학력평가 문제지

직업탐구 영역(프로그래밍)

제 4 교시

성명			수험번호						3

직업탐구 영역

(프로그래밍)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

직업탐구 영역

(프로그래밍)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

25

52

2권 중 1권

태블릿 PC에서도 동작할 수 있도록 개발하는 것이 좋겠습니다.

운영체제를 고려하여 프로그래밍 언어는 JAVA를 이용하는 것이 좋겠습니다.

인공지능 개발의 편의를 위해 객체지향언어가 적합하다고 봅니다.

① 문제 분석 단계이다.

② 고급언어에 대한 언급은 없다.

③ 문서화 및 유지 보수 단계이다.

④ 프로그램에서 사용할 입출력 장치를 정하고 있다.

⑤ 프로그램 디버깅 작업을 마친 후 필요한 단계이다.

2. 초기에 그림과 같은 형태로 콩이 컵에 담겨져 있다. [알고리즘]을 수행한 후, 각 컵에 들어 있는 콩의 개수로 옳은 것은?

[3점]

[알고리즘]

단계 1 : A컵에 있는 콩의 개수가 B컵에 있는 콩의 개수보다 적으면 단계 4로 간다.

단계 2 : A컵에서 B컵에 있는 콩의 개수만큼 제거하고, C컵에 새로운 콩 1개를 넣는다.

단계 3 : A컵에 콩이 남아 있으면 단계 1로 가고, 그렇지 않으면 단계 5로 간다.

단계 4 : A컵에 있는 콩을 D컵에, B컵에 있는 콩을 A컵에, D컵에 있는 콩을 B컵에 순서대로 부은 후, 단계 1로 간다.

단계 5 : 알고리즘을 종료한다.

A	B	C	D

①	0	2	4	0

②	0	4	3	0

③	0	4	3	1

④	4	4	2	0

⑤	4	4	3	0

3. 다음은 두 변수 a, b의 값을 교환하여 출력하는 순서도이다. (가)에 들어갈 문장으로 옳은 것은?

① a = b	② a = a - b	③ a = a * b

④ b = b + a	⑤ b = b - a

4. 그림에서 전등에 대한 논리식이 1이면 켜지고, 0이면 꺼진다. [조건]에 따라 작동시킬 때 논리식으로 옳은 것은?

	[조건] ◦ 버튼을 누르면 1(True), 그렇지 않으면 0(False)이다. ◦ a, b, c 버튼 중 2개 이상을 누른 모든 경우만 전등이 켜지고, 그렇지 않으면 꺼진다.

	C 언어	비주얼 베이식 언어
①	a || b || c	a Or b Or c
②	a && b && c	a And b And c
③	(a || b) && (b || c)	(a Or b) And (b Or c)
④	(a && b) || (b && c)	(a And b) Or (b And c)
⑤	(a && b)||(b && c)||(a && c)	(a And b) Or (b And c) Or (a And c)

5. 그림과 같이 저울이 평형을 이루었을 경우 물체 A의 질량은 7g 임을 알 수 있다. [조건]에 따라 측정할 경우 알 수 없는 질량인 것은?

[조건]

◦ 질량 1g, 3g, 10g인 3개의 추가 각각 1개씩 있다.

◦ 저울과 추만을 사용하여 물체의 질량을 측정한다.

① 2g	② 4g	③ 5g	④ 11g	⑤ 13g

6. 다음 알고리즘에 a 값을 5, 1, 3, 7, 0의 순서대로 입력하면 4가 출력된다.  에 들어갈 문장으로 옳은 것은?

26

52

2권 중 1권

단계 1 : 변수 a, b, n, s를 모두 0으로 초기화한다.

단계 2 : a에 값을 입력한다.

단계 3 : a가 0이면 단계 7로 이동한다.

단계 4 : s = s + a

단계 5 :

단계 6 : 단계 2로 이동한다.

단계 7 : b = s ÷ n

단계 8 : b를 출력한 후 종료한다.

① n = n + 1	② n = n + n	③ n = n + s

④ n = n % s	⑤ s = s * 10

7. 스포츠 중계 방송 시간이 표와 같을 때, [조건]에 따라 시청할 경우 볼 수 있는 경기 종목의 최대 개수로 옳은 것은?

경기 종목	시작 시간	종료 시간
수영	14:00	14:50
양궁	13:00	16:00
축구	15:00	17:50
레슬링	21:00	23:00
태권도	20:00	22:00
핸드볼	18:00	20:50

[조건]

◦ 각 경기는 시작 시간부터 종료 시간까지 시청한다.

◦ 방송 채널 전환 시간은 무시한다.

① 2	② 3	③ 4	④ 5	⑤ 6

8. 그림과 같이 어떤 생물체의 세포 수가 1초마다 2배씩 증가한다. 10초 후의 세포 수를 구하는 프로그램을 작성하고자 할 때,  안에 들어갈 문장으로 옳은 것은?

C 언어	비주얼 베이식 언어
#include <stdio.h> void main() { int a, n=1, s=10; for(a=1; a<=s; a++) ; printf("%d",n); }	Private Sub Form_Activate() Dim a, n, s As Integer n = 1: s = 10 For a = 1 To s Next : Print n End Sub

① n = n * 2	② n = n * a	③ n = n * n

④ n = n + 2	⑤ n = n / 2

9. 그림과 같이 4대의 기계(M1 ~ M4)가 일렬로 배열되어 있다. 각 기계와 새로운 기계(M5) 사이의 거리의 총합을 최소로 하기 위해서 새로운 기계를 설치해야 할 위치로 옳은 것은?

① (ㄱ)	② (ㄴ)	③ (ㄷ)	④ (ㄹ)	⑤ (ㅁ)

10. 프로그램 실행 후 출력되는 결과로 옳은 것은? [3점]

C 언어	비주얼 베이식 언어
#include <stdio.h> void main() { int n=21743; int a, b=0; while(n!=0) { a=n%10; n=n/10; if(a%2==0) b=b+a; } printf("%d",b); }	Private Sub Form_Activate() Dim n, a, b As Integer n = 21743: b = 0 While (n <> 0) a = n Mod 10 n = n \ 10 If a Mod 2 = 0 Then b = b + a End If Wend Print b End Sub

① 2	② 6	③ 11	④ 15	⑤ 17

11. 다음은 배열 d, r을 비교하여 유사도를 판별하는 프로그램이다. 실행결과 '유사' 가 출력되기 위해  안에 들어갈 내용으로 옳은 것은? [3점]

C 언어	비주얼 베이식 언어
#include <stdio.h> void main() { int a, b, s; int d[6]={1, 4, 3, 5, 2, 7}; int r[6]={}; s=0; for (a=0; a<=5; a++) { b=(d[a]-r[a])*(d[a]-r[a]); s=s+b; } if (s < 10) printf("유사"); }	Private Sub Form_Activate() Dim a, b, s As Integer Dim d(), r() As Variant d() = Array(1, 4, 3, 5, 2, 7) r() = Array() s = 0 For a = 0 To 5 b = (d(a)-r(a)) * (d(a)-r(a)) s = s + b Next If s < 10 Then Print "유사" End Sub

① 1, 4, 3, 5, 6, 7	② 1, 4, 5, 3, 5, 8

③ 2, 4, 3, 1, 2, 7	④ 2, 5, 4, 6, 3, 7

⑤ 7, 2, 5, 3, 4, 1

12. 프로그램 실행 후 1 ～ 10까지의 정수를 입력하였을 때, 출력될 수 없는 값은?

27

52

2권 중 1권

C 언어	비주얼 베이식 언어
#include <stdio.h> void main(){ int num, result; printf("수=?"); scanf("%d", &num); result=num%4; printf("%d", result); }	Private Sub Form_Activate() Dim num, result As Integer num = InputBox("수 = ?") result = num Mod 4 Print result End Sub

① 0	② 1	③ 2	④ 3	⑤ 4

13. 프로그램 실행 후 출력되는 결과로 옳은 것은? [3점]

C 언어	비주얼 베이식 언어
#include <stdio.h> void main(){ int a, b, s; a=10; s=0; for(b=2; b<=a/2; b++){ if(a%b==0) s=s+b; } printf("%d", s); }	Private Sub Form_Activate() Dim a, b, s As Integer a = 10 : s = 0 For b = 2 To a \ 2 If a Mod b = 0 Then s = s + b Next Print s End Sub

① 2	② 5	③ 7	④ 10	⑤ 25

14. 프로그램 실행 후 변수 a, b, c에 순서대로 값을 입력하였을 때 'F'가 출력되는 것은? [3점]

C 언어	비주얼 베이식 언어
#include <stdio.h> void main(){ int a, b, c, m, s; scanf("%d %d %d", &a, &b, &c); if (a>b && a>c) { m=a; s=b+c; } else if (b>a && b>c) { m=b; s=a+c; } else { m=c; s=a+b; } if (m<s) printf("T"); else printf("F"); }	Private Sub Form_Activate() Dim a, b, c, m, s As Integer a = Int(InputBox("")) b = Int(InputBox("")) c = Int(InputBox("")) If a > b And a > c Then m = a : s = b + c ElseIf b > a And b > c Then m = b : s = a + c Else m = c : s = a + b End If If m < s Then Print "T" Else Print "F" End If End Sub

① 1 4 4	② 2 3 4	③ 3 4 5

④ 3 4 8	⑤ 7 5 3

15. 프로그램 실행 후 <보기>의 값을 차례대로 입력하였을 때  'OK' 가 출력되는 것은? [3점]

C 언어	비주얼 베이식 언어
#include <stdio.h> void main() { int d[8]; int a, cnt=0; for(a=0; a<=7; a++){ scanf("%d",&d[a]); if(d[a]==1) cnt=cnt+1; } if(cnt%2==1) printf("OK"); else printf("Error"); }	Private Sub Form_Activate() Dim d(7) As Integer Dim a, cnt As Integer cnt = 0 For a = 0 To 7 d(a) = InputBox("입력") If d(a) = 1 Then cnt = cnt + 1 End If Next If cnt Mod 2 = 1 Then Print "OK" Else Print "Error" End If End Sub

		< 보 기 >
	ㄱ. 0 0 0 0 0 0 0 1 ㄴ. 0 1 0 0 1 1 1 0 ㄷ. 1 0 0 1 1 0 0 0 ㄹ. 1 1 1 0 0 0 0 1

① ㄱ, ㄴ	② ㄱ, ㄷ	③ ㄴ, ㄷ	④ ㄴ, ㄹ	⑤ ㄷ, ㄹ

16. 프로그램 실행 후 출력되는 결과로 옳은 것은? [3점]

C 언어	비주얼 베이식 언어
#include <stdio.h> void main() { int d[8]={7, 2, 1, 5, 7, 2, 7, 7}; int r[8]={0, 0, 0, 0, 0, 0, 0, 0}; int a, b, c; for(a=0; a<=7; a++) { c=d[a]; r[c]=r[c]+1; } for (a=1; a<=7; a++) if(r[a]>0) printf("%d %d ", a, r[a]); }	Private Sub Form_Activate() Dim d(), r() As Variant d() = Array(7, 2, 1, 5, 7, 2, 7, 7) r() = Array(0, 0, 0, 0, 0, 0, 0, 0) Dim a, b, c As Integer a = 0 : c = 0 For a = 0 To 7 c = d(a) r(c) = r(c) + 1 Next For a = 1 To 7 If r(a) > 0 Then Print a; r(a); End If Next End Sub

① 1 2 2 5 7 7 7	② 7 7 7 5 2 2 1

③ 1 1 2 2 1 5 4 7	④ 1 1 2 2 5 1 7 4

⑤ 7 7 5 5 2 2 1 1

17. 프로그램 실행 후 출력되지 않는 값은? [3점]

25

16

2권 중 1권

C 언어	비주얼 베이식 언어
#include <stdio.h> void main(){ int a, b; int d[6]={97,89,67,89,78,67}; int r[6]={1,1,1,1,1,1}; for(a=0; a<=5; a++){ for(b=0; b<=5; b++){ if(d[a]<d[b]) r[a]++; } printf("%d ", r[a]); } }	Private Sub Form_Activate() Dim a, b As Integer Dim d(), r() As Variant d() = Array(97,89,67,89,78,67) r() = Array(1, 1, 1, 1, 1, 1) For a = 0 To 5 For b = 0 To 5 If d(a) < d(b) Then r(a) = r(a) + 1 End If Next Print r(a); Next End Sub

① 1	② 2	③ 3	④ 4	⑤ 5

18. 배열 r에 저장된 값을 다음과 같이 그림으로 표현하였다. 프로그램 실행 후 출력되는 결과로 옳은 것은? [3점]

배열 r :

1	2	3	4	5	6	7
3	5	2	7	8	1	9

C 언어	비주얼 베이식 언어
#include <stdio.h> int r[8]={0,3,5,2,7,8,1,9}; void adj(int a); void main(){ int a; adj(3); for(a=1; a<=7; a++) printf("%d ", r[a]); } void adj(int a){ int b, k; k=r[a]; b=a*2; do { if(r[b]<r[b+1]) b++; if(k>=r[b]) break; r[b/2]=r[b]; b=b*2; } while(b<=7); r[b/2]=k; }	Dim r() As Variant Private Sub Form_Activate() Dim a As Integer r() = Array(0,3,5,2,7,8,1,9) adj (3) For a = 1 To 7 Print r(a); Next End Sub Private Sub adj(a As Integer) Dim b, k As Integer k = r(a) : b = a * 2 Do If r(b) < r(b+1) Then b = b + 1 If k >= r(b) Then Exit Do r(b \ 2) = r(b) : b = b * 2 Loop While b <= 7 r(b \ 2) = k End Sub

① 1 2 3 5 7 8 9	② 3 2 5 9 1 8 7

③ 3 5 2 7 8 1 9	④ 3 5 9 7 8 1 2

⑤ 9 8 3 7 5 1 2

[19 ~ 20] 그림과 같이 방(0 ~ 5)의 연결 구조를 배열 gf에 표현하였다. 물음에 답하시오.

gf	0	1	2	3	4	5
0	0	1	1	0	0	0
1	0	0	0	1	0	0
2	0	0	0	0	1	1
3	0	0	0	0	0	0
4	0	0	0	0	0	0
5	0	0	0	0	0	0

C 언어	비주얼 베이식 언어
#include <stdio.h> int pt, k, st[20], v[6]; int gf[6][6]; void push(int n); int pop(); void main(){ int a; pt=0; k=0; v[k]=1; push(0); do{ if(pt>0) { k=pop(); v[k]=1; printf("%d ", k); } for(a=0; a<=5; a++){ if((gf[k][a]==1) && v[a]==0) push(a); } }while(pt>0); } void push(int n) { st[++pt]=n; } int pop() { return st[pt--]; }	Dim pt, k, st(20), v(6) As Integer Dim gf(5, 5) As Integer Private Sub Form_Activate() Dim a As Integer pt = 0 : k = 0 : v(k) = 1 push (0) Do If pt > 0 Then k = pop() : v(k) = 1 : Print k; End If For a = 0 To 5 If gf(k , a) = 1 And v(a) = 0 Then push (a) End If Next Loop While pt > 0 End Sub Private Sub push(n As Integer) pt = pt + 1 : st(pt) = n End Sub Private Function pop() _ As Integer pop = st(pt) : pt = pt - 1 End Function

19. 프로그램에 대한 분석으로 옳은 것은?

① 큐 구조를 활용하였다.

② 변수 pt의 최종 값은 5가 된다.

③ 변수 pt는 지역 변수로 선언하였다.

④ pop함수는 결과 값을 반환하지 않는다.

⑤ pt가 0보다 클 경우 pop함수가 호출된다.

20. 프로그램 실행 후 출력 결과에 따라 로봇이 각 방을 방문하려고 할 때, 방문하는 순서로 옳은 것은? [3점]

① 0-1-2-3-4-5	② 0-1-3-2-4-5

③ 0-1-3-2-5-4	④ 0-2-4-5-1-3

⑤ 0-2-5-4-1-3

15

16

2권 중 1권

28

52

2권 중 1권

※ 확인 사항

◦ 답안지의 해당란에 필요한 내용을 정확히 기입(표기)했는지 확인하시오.