1. 그림과 같은 계층 구조를 갖는 방에서 로봇이 [조건]에 따라 방 안의 숫자를 모두 꺼내려고 한다. 로봇이 꺼내오는 숫자의 순서로 옳은 것은?

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

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

제 4 교시

성명			수험번호						3

직업탐구 영역

(프로그래밍)

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

직업탐구 영역

(프로그래밍)

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

25

52

2권 중 2권

	[조건] ◦ 로봇은 ‘시작’ 위치에서 출발하여 선을 따라 이동한다. ◦ 항상 현재보다 하위에 있는 방의 숫자를 모두 꺼낸 후 현재 숫자를 꺼낼 수 있다. ◦ 같은 단계에서는 왼쪽 숫자를 먼저 꺼낸다.

① 1 - 2 - 3 - 4 - 5 - 6 - 7

② 1 - 2 - 4 - 5 - 3 - 6 - 7

③ 4 - 2 - 5 - 1 - 6 - 3 - 7

④ 4 - 5 - 2 - 6 - 7 - 3 - 1

⑤ 4 - 5 - 6 - 7 - 3 - 2 - 1

2. 표와 같이 두 팀의 점수 a, b의 합(s)과 차(d)를 입력하였을 때 a, b를 출력하는 프로그램을 작성하였다. (가), (나)에 들어갈 내용으로 옳은 것은? (단, a, b는 양의 정수이다.)

입력		출력
합(s)	차(d)	a	b
40	20	30	10
20	40	불가능

C 언어	비주얼 베이직 언어
#include <stdio.h> void main() { int a,b,s,d; printf("합(s)=?"); scanf("%d", &s); printf("차(d)=?"); scanf("%d", &d); if( ) (가) printf("불가능 \n"); else{ ; (나) b=s-a; printf("a, b=%d %d\n", a, b); } }	Private Sub Form_Activate() Dim a, b, s, d As Integer s=Val(InputBox("합(s)=?")) d=Val(InputBox("차(d)=?")) If Then (가) Print "불가능" Else (나) b = s - a Print "a, b="; a; b End If End Sub

(가)	(나)

①	s>d	a=s+d

②	s>d	a=(s+d)/2

③	s<d	a=s+d

④	s<d	a=(s+d)*2

⑤	s<d	a=(s+d)/2

3. O, X 퀴즈에서 철수, 영희, 민호가 각자 한 문제씩 맡아 그림과 같이 답하였다. 세 사람이 얻은 점수의 합으로 옳은 것은?

순서도는 프로그램 코딩이 완료된 후 작성한다.

프로그램의 논리적 오류는  프로그램 번역 시에는 발견하기가 어렵다.

프로그래밍 언어에 따라 순서도를 다르게 작성한다.

철수

영희

민호

① 1	② 3	③ 4	④ 6	⑤ 7

4. 로봇이 6×6 칸의 사각형 방을 [알고리즘]에 따라 이동했을 때 로봇의 최종 위치로 옳은 것은? (단, 로봇의 출발 위치는 그림과 같다.)

	[알고리즘] (1) 변수 c=0으로 초기화한다. (2) 동쪽으로 1칸 이동 후 c가 1 증가한다. (3) 남쪽으로 c칸 이동하고 서쪽으로 c칸 이동한다. (4) 남쪽으로 1칸 이동 후 c가 1 증가한다. (5) 동쪽으로 c칸 이동하고 북쪽으로 c칸 이동한다. (6) 만약 c<4이면 단계 (2)로 이동하고 그렇지 않으면 종료한다.

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

5. 프로그램을 실행했을 때 출력되는 값으로 옳은 것은?

C 언어	비주얼 베이직 언어
#include <stdio.h> void main() { int a=10, b=20; while(a<b) { a=a+1; b=b-1; } printf("%d", a); }	Private Sub Form_Activate() Dim a, b As Integer a = 10: b = 20 While a < b a = a + 1 b = b - 1 Wend Print a End Sub

① 11	② 13	③ 14	④ 15	⑤ 16

6. (가)~(다)는 구조화 프로그램의 세 가지 논리 구조에 대한 설명이다. 각 구조에 해당하는 프로그램 코드를 바르게 연결한 것은?

(가) 주어진 명령을 조건하에서 반복 수행하는 구조

(나) 조건의 만족 여부에 따라 처리 대상이나 순서를 달리하는 구조

(다) 프로그램의 흐름이 순차적으로 위에서 아래로 이루어지는 실행 구조

	C 언어	비주얼 베이직 언어
ㄱ	int a, b;	Dim a, b As Integer
ㄴ	a=3; b=2; a=a%b;	a = 3 b = 2 a = a Mod b
ㄷ	if(a==0) printf("a는 b의 배수입니다 \n");	If a = 0 Then Print "a는 b의 배수입니다" End If
ㄹ	for(a=1; a<=3; a++) b=b*2; printf("%d\n", b);	For a = 1 To 3 b = b * 2 Next Print b

(가)	(나)	(다)

①	ㄱ	ㄴ	ㄹ

②	ㄴ	ㄷ	ㄱ

③	ㄴ	ㄹ	ㄷ

④	ㄹ	ㄴ	ㄷ

⑤	ㄹ	ㄷ	ㄴ

7. 프로그램을 실행했을 때 출력되는 결과로 옳은 것은? [3점]

C 언어	비주얼 베이직 언어
#include <stdio.h> void main() { int i, j, k; int a[5]={320,295,420,370,350}; static int rk[5], gd[5]; for(i=0; i<5; i++) { rk[i]=1; for(j=0; j<5; j++) { if(a[i]<a[j]) rk[i]=rk[i]+1; } k=a[i]/100; gd[k]=gd[k]+1; printf("%d ", rk[i]); } printf("\n"); for(k=0; k<5; k++) printf("%d ", gd[k]); printf("\n"); }	Private Sub Form_Activate() Dim i, j, k As Integer Dim a() As Variant a()=Array(320, 295, 420, 370, 350) Dim rk(5), gd(5) As Integer For i = 0 To 4 rk(i) = 1 For j = 0 To 4 If a(i) < a(j) Then rk(i) = rk(i) + 1 End If Next k = a(i) \ 100 gd(k) = gd(k) + 1 Print rk(i); Next: Print For k=0 To 4 Print gd(k); Next End Sub

①	1 2 3 4 5 0 0 1 3 1	②	1 2 3 4 5 3 2 4 3 3	③	3 2 1 5 4 0 0 1 3 1	④	4 5 1 2 3 0 0 1 3 1	⑤	4 5 1 2 3 3 2 4 3 3

8. 다음 프로그램에 대한 설명으로 옳은 것은? [3점]

C 언어	비주얼 베이직 언어
#include <stdio.h> void main() { int n; printf("n=?"); scanf("%d",&n); while(n>1){ if(n%2==0) n=n/2; else n=n+1; printf("%d ", n); } }	Private Sub Form_Activate() Dim n As Integer n = Val(InputBox("n=?")) While n > 1 If n Mod 2 = 0 Then n = n \ 2 Else n = n + 1 End If Print n; Wend End Sub

① 특정 n 값에 따라 무한 루프에 빠질 수 있다.

② n 값이 11이면 출력되는 수의 합은 45이다.

③ n 값이 홀수이면 출력되는 수는 모두 홀수이다.

④ n 값이 짝수이면 출력되는 수는 모두 짝수이다.

⑤ n 값이 5 이상이면 마지막에 출력되는 세 수는 4, 2, 1이다.

9. 그림은 [규칙]에 따라 바둑알을 가져오는 게임을 하는 모습이다. 전체 바둑알의 개수가 24개일 때 나중에 가져가는 사람이 반드시 이기기 위한 K 값으로 옳은 것은? [3점]

	[규칙] ◦ 한 번에 가져올 수 있는 바둑알의 최대 개수 K를 정한다.(단, 3 ≦ K ≦ 10) ◦ 두 사람이 순서를 정하고 번갈아 가며 한 개 이상 K개 이하의 바둑알을 가져온다. ◦ 자기 순서에서 가져올 바둑알이 없으면 진다.

① 4	② 5	③ 6	④ 8	⑤ 9

26

52

2권 중 2권

10. 그림과 같이 4개국 모두가 서로 한 번씩 시합을 하는 리그전을 모두 마쳤을 때 나타날 수 있는 결과로 옳은 것은? [3점]

① 4팀 모두가 2승 1무를 하였다.

② 4팀 모두가 2승 1패를 하였다.

③ 한국은 3승, 나머지 팀은 모두 1승 2패를 하였다.

④ 한국과 독일은 3승, 브라질과 스페인은 3패를 하였다.

⑤ 한국과 브라질은 2승 1패, 독일과 스페인은 1무 2패를 하였다.

11. 그림과 같은 원의 둘레에 정수 1 ~ 100까지 100개의 점이 순서대로 찍혀 있다. 두 점을 연결한 선을 현이라 할 때 두 개의 현이 서로 교차하는지를 판별하는 프로그램을 작성하고자 한다. (가)에 들어갈 내용으로 옳은 것은? (단, 4개의 점은 모두 다르다.) [3점]

C 언어	비주얼 베이직 언어
#include <stdio.h> void main() { int i, a1, a2, b1, b2, cnt, t; printf("a1, a2=?"); scanf("%d %d", &a1, &a2); printf("b1, b2=?"); scanf("%d %d", &b1, &b2); if(a1>a2) {t=a1; a1=a2; a2=t;} cnt=0; for(i=a1; i<=a2; i++) if( ) cnt++; (가) if(cnt%2==0) printf("교차하지 않음 \n"); else printf("교차함 \n"); }	Private Sub Form_Activate() Dim i, a1, a2, b1, b2, cnt, t As Integer a1 = Val(InputBox("a1=?")) a2 = Val(InputBox("a2=?")) b1 = Val(InputBox("b1=?")) b2 = Val(InputBox("b2=?")) If a1 > a2 Then t = a1: a1 = a2: a2 = t End If: cnt = 0 For i = a1 To a2 If Then cnt = cnt + 1 (가) Next If cnt Mod 2 = 0 Then Print "교차하지 않음" Else Print "교차함" End If End Sub

C 언어	비주얼 베이직 언어

①	i != b1 || i != b2	i <> b1 Or i <> b2

②	i == b1 || i == b2	i = b1 Or i = b2

③	i == b1 && i == b2	i = b1 And i = b2

④	i >= b1 || i >= b2	i >= b1 Or i >= b2

⑤	i >= b1 && i >= b2	i >= b1 And i >= b2

12. 다음과 같이 일정하게 증가하는 수열에서 10번째 항까지의 합(s)을 구하는 프로그램을 작성하고자 한다. (가)에 들어갈 내용으로 옳은 것은? [3점]

2,  6,  18,  54,  162,  486, ․ ․ ․

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

① a * r	② a * s	③ a * n

④ a / r	⑤ a / s

13. 프로그램을 실행했을 때 출력되지 않는 값은?

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

① 1	② 3	③ 5	④ 7	⑤ 35

14. 다음 논리식의 결과가 ‘참’이 되기 위한 최소의 N 값으로 옳은 것은?

C 언어	N % 3 == 2 && N % 4 == 3 && N % 5 == 4
비주얼 베이직 언어	N Mod 3 = 2 And N Mod 4 = 3 And N Mod 5 = 4

① 11	② 15	③ 40	④ 59	⑤ 60

15. 프로그램을 실행했을 때 출력되는 결과로 옳은 것은? [3점]

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

①		②		③
	1 1 2 1 2 3 1 2 3 4		1 2 3 4 5 6 7 8 9 10		1 2 3 3 4 5 4 5 6 7
④		⑤
	2 3 4 4 5 6 5 6 7 8		2 3 4 5 6 7 8 9 10 11

27

52

2권 중 2권

16. 변수 a ~ e 중 연산 결과 값이 정확하게 저장되지 않는 것은?

C 언어	비주얼 베이직 언어
char a, b, c; int d; float e; a = 125; b = a % 7; c = a * 25; d = 200 - a; e = 1.2 - (2.0 / 5.0);	Dim a As Byte, b As Byte, c As Byte Dim d As Integer Dim e As Single a = 125 b = a Mod 7 c = a * 25 d = 200 - a e = 1.2 - (2# / 5#)

① a	② b	③ c	④ d	⑤ e

17. 그림은 세 수 A, B, C를 입력받아 중간 수를 구하는 순서도의 일부이다. (가)~(다)에 들어갈 내용으로 옳은 것은?

(가)	(나)	(다)

①	A	B	C

②	A	C	B

③	B	A	C

④	B	C	A

⑤	C	B	A

18. 프로그램을 실행했을 때 출력되는 값으로 옳은 것은? [3점]

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

① 1	② 2	③ 3	④ 4	⑤ 5

19. 프로그램을 실행했을 때 출력되는 값으로 옳은 것은? [3점]

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

① 6	② 7	③ 13	④ 14	⑤ 20

20. 그림과 같이 일정한 규칙에 따라 배열에 값을 채우는 프로그램을 작성하였다. 배열의 4행에 입력될 값으로 옳은 것은? [3점]

	0열	1열	2열	3열	4열	5열
0행	1	0	0	0	0	0
1행	1	1	0	0	0	0
2행	2	1	0	0	0	0
3행	1	2	1	1	0	0
4행

C 언어	비주얼 베이직 언어
#include <stdio.h> int p[5][6]; void main() { int a, b, c, d; p[0][0]=1; c=1; d=0; for(a=0; a<4; a++) { for(b=0; b<5; b++) { if(p[a][b]==0) break; else if(p[a][b]==p[a][b+1]) c=c+1; else { p[a+1][d]=c; d=d+1; p[a+1][d]=p[a][b]; d=d+1; c=1; } } d=0; } }	Private Sub Form_Activate() Dim a, b, c, d As Integer Dim p(4, 5) As Integer p(0, 0) = 1 c = 1: d = 0 For a = 0 To 3 For b = 0 To 4 If p(a, b) = 0 Then Exit For ElseIf p(a, b) = p(a, b+1) Then c = c + 1 Else p(a + 1, d) = c d = d + 1 p(a + 1, d) = p(a, b) d = d + 1 c = 1 End If Next d = 0 Next End sub

① 1 1 1 2 2 1	② 1 2 1 2 1 2	③ 1 2 2 3 4 0

④ 3 1 2 2 1 1	⑤ 3 3 2 2 1 0

※ 확인 사항

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

28

52

2권 중 2권