◦  먼저 수험생이 선택한 과목의 문제지인지 확인하시오.

직업탐구영역

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

직업탐구영역

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

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

제 4 교시    직업탐구영역(프로그래밍)

성명			수험번호						3

◦  문제지에 성명과 수험 번호를 정확히 기입하시오.

◦  답안지에 수험 번호, 선택 과목, 답을 표기할 때는 반드시 ‘수험생이 지켜야 할 일’ 에 따라 표기하시오.

◦  문항에 따라 배점이 다르니, 각 물음의 끝에 표시된 배점을 참고하시오. 3점 문항에만 점수가 표시되어 있습니다. 점수 표시가 없는 문항은 모두 2점씩입니다.

65

72

5권 중 5권

프로그래밍

1. 그림의 (가), (나)에 해당하는 프로그래밍 언어를 바르게 짝지은 것은?

(가)	(나)

① 포트란	기계어

② 비주얼 C++	어셈블리어

③ 비주얼 베이직	C

④ C	비주얼 베이직

⑤ Perl	베이직

2. 다음은 길동이가 개발한 ‘논리말’에 대한 설명과 예시이다. ‘A와 B는 동기이다.’를 바르게 표현한 것은? (단, 동기는 형제, 자매, 남매를 모두 포함한다.) [3점]

변수, 함수 및 연산자	의미
A, B, C man(A) woman(A) parent(A, B) disjoint(A, B) ∪ ∩	사람을 지정하는 변수이다. A는 남자다. A는 여자다. A는 B의 부모이다. A와 B는 같은 사람이 아니다. 논리 합 논리 곱

[예시]

parent(B, A) ∩ woman(A)  ⇒  A는 B의 딸이다.

① parent(A, B) ∩ parent(B, C)

② parent(A, C) ∩ parent(B, C) ∩ disjoint(A, B)

③ parent(C, A) ∩ parent(C, B) ∩ disjoint(A, B)

④ parent(A, C) ∩ parent(B, C) ∩ man(A) ∪ woman(B)

⑤ parent(C, A) ∩ man(A) ∩ woman(B) ∩ disjoint(A, B)

3. 다음 규칙에 따라 로봇이 미로 안에서 이동한다. 미로의 모양이 그림과 같을 때, 목적지에 도착하기 위한 이동 경로를 바르게 나열한 것은?

[규칙] 1. 로봇은 왼쪽 벽을 감지하여 벽을 따라 앞으로 간다. 2. 갈림길에 이르거나 정면에 벽이 있을 경우, 다음과 같이 방향을 바꾼다. 가. 1순위는 좌회전한다. 나. 2순위는 계속 직진한다. 다. 3순위는 우회전한다. 라. 4순위는 U턴한다.

① A-B-A-F-E-F-K-G-H-목적지

② A-B-C-D-C-B-A-K-I-목적지

③ A-B-C-D-C-B-A-K-G-H-목적지

④ A-B-C-D-C-B-A-F-E-F-K-I-목적지

⑤ A-B-C-D-C-B-A-F-E-F-K-G-H-목적지

4. 다음은 교내 장학금을 받을 수 있는 조건을 표현한 논리식과 기호에 대한 설명이다. 교내 장학금을 받을 수 있는 학생을 모두 고른 것은? (단, 논리식이 ‘참’이면 장학금을 받는다.)

[논리식]

◦ C 언어 :   (A  B) && (!C)

◦ 비주얼 베이직 언어 :   (A Or B) And (Not C)

[논리식에 사용된 기호]

A : 기말 고사 평균 점수가 95점 이상이면 ‘참’이다.

B : 모의 고사 석차 백분율이 3% 이내이면 ‘참’이다.

C : 외부 장학금을 받고 있으면 ‘참’이다.

구분 이름	기말 고사 평균 점수	모의 고사 석차 백분율(%)	외부 장학금
갑돌	89	2	받지 않음
갑순	96	20	받음
순희	88	4	받지 않음
영희	98	10	받지 않음
철수	95	2	받음

① 철수

② 갑돌, 영희

③ 갑순, 철수

④ 순희, 영희

⑤ 갑돌, 순희, 영희

5. 다음 프로그램에서 a=7, b=-1 일 때, 출력 결과로 옳은 것은?

프로그래밍

C 언어	비주얼 베이직 언어
if(a>b){ if(a<0) printf("A"); else printf("B"); } if(b<0) printf("C");	If a>b Then If a<0 Then Print "A"; Else Print "B"; End If End If If b<0 Then Print "C"; End If

① A	② B	③ AB	④ AC	⑤ BC

6. 현석, 승철, 재민, 우혁이는 키가 모두 다르다. 이들의 키가 다음 조건을 만족할 때, 각각의 이름을 옳게 나열한 것을 <보기>에서 고른 것은? [3점]

[조건]

◦ 재민이는 승철이보다 크다.

◦ 승철이는 우혁이보다 작다.

◦ 현석이는 재민이보다 작고, 승철이보다 크다.

			<보 기>
ㄱ.	현석	승철		우혁		재민
ㄴ.	우혁	승철		현석		재민
ㄷ.	승철	현석		재민		우혁
ㄹ.	승철	재민		현석		우혁
ㅁ.	승철	현석		우혁		재민

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

66

72

5권 중 5권

7. 전 세계 석유 소비량이 전년에 비해 매년 5%씩 증가한다고 할 때, 약 몇 년 후에 석유가 고갈되는가를 구하는 순서도이다. 전 세계 석유 매장량을 Q, 금년도 소비량을 S라 하면 (가)에 들어갈 내용으로 옳은 것은?

① Q=Q-S	② Q=Q+S	③ Q=S-Q

④ S=S-Q	⑤ S=Q-S

8. 다음과 같이 정수형 배열을 선언하였을 때, 저장할 수 있는 자료의 총 개수로 옳은 것은?

프로그래밍

C 언어	비주얼 베이직 언어
int a[10]; int c[2][3][2];	Dim a(9) As Integer Dim c(1,2,1) As Integer

① 13	② 17	③ 18	④ 21	⑤ 22

9. 다음 프로그램의 실행 결과로 옳은 것은? [3점]

C 언어	비주얼 베이직 언어
#include <stdio.h> int s(int n){ if(n<1) return 0; else return n+s(n-1); } void main(){ int k=9; printf("%d", s(k)); }	Function s(n As Integer) As Integer If n<1 Then s=0 Else s=n+s(n-1) End If End Function Private Sub Form_Activate() Dim k As Integer k=9 Print s(k) End Sub

① 9	② 10	③ 17	④ 45	⑤ 55

10. 학생들의 실기 점수(sj)와 면접 점수(mj)가 표와 같을 때, 이를 입력하여 합격 여부를 출력하는 프로그램의 일부이다. 프로그램 실행 결과 ‘합격’으로 출력되는 사람은?

구분 이름	실기 점수(sj)	면접 점수(mj)
갑돌	10	58
갑순	13	52
순희	12	54
영희	17	45
철수	15	50

C 언어	비주얼 베이직 언어
int sj, mj; double a; scanf("%d", &sj); scanf("%d", &mj); a=(sj*2+mj)/2.0; if(a>=40) printf("합격"); else printf("불합격");	Dim sj, mj As Integer Dim a As Double sj = Val(InputBox("")) mj = Val(InputBox("")) a = (sj * 2 + mj) / 2 If (a >= 40) Then Print "합격" Else Print "불합격" End If

① 갑돌	② 갑순	③ 순희	④ 영희	⑤ 철수

11. (가), (나)의 변수 r이 동일한 값을 갖도록  에 들어갈 내용으로 옳은 것은?

ㄱ

프로그래밍

	C 언어	비주얼 베이직 언어
(가)	r = abs(a);	r = Abs(a)
(나)	if ( ) ㄱ ㄱ r = -a; else r = a;	If Then r = -a Else r = a End If

ㄱ

ㄱ

① a > 0	② a <0	③ a >= 0

④ a > r	⑤ r < a*a

71

72

5권 중 5권

12. 사용자 함수 R에 전달되는 배열 t의 값이 다음과 같을 때, 함수가 돌려주는(리턴) 값으로 옳은 것은? [3점]

C 언어	t[0]	t[1]	t[2]	t[3]
비주얼 베이직 언어	t(0)	t(1)	t(2)	t(3)
값	2	1	4	3

C 언어	비주얼 베이직 언어
int R(int t[]){ int i, z; z=0; for(i=0; i<4; i++){ z=z*10; z=z+t[i]; } return z; }	Function R( t( ) As Integer)As Integer Dim i, z As Integer z=0 For i=0 To 3 z=z*10 z=z+t(i) Next R=z End Function

① 10	② 1234	③ 2143	④ 3412	⑤ 4321

13. 다음 프로그램의 실행 결과로 옳은 것은? [3점]

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

① 13 15 17	② 15 14 16	③ 15 15 15

④ 15 16 17	⑤ 16 14 15

14. 다음 프로그램의 실행 결과로 옳은 것은? [3점]

프로그래밍

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

① 4	② 8	③ 10	④ 15	⑤ 55

15. 프로그램의 출력 결과가 다음과 같을 때, 프로그램 코드를 옳게 배열한 것은?

[출력 결과] 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5			C 언어	비주얼 베이직 언어
			int a, b;	Dim a, b As Integer
		ㄱ	}	Next
		ㄴ	for(b=1;b<=a;b++) {	For b = 1 To a
		ㄷ	for(a=1;a<=5;a++) {	For a = 1 To 5
		ㄹ	printf("\n");	Print
		ㅁ	printf("%d ", a);	Print a;
			}	Next

① ㄴ-ㄷ-ㄱ-ㅁ-ㄹ	② ㄴ-ㄷ-ㄹ-ㄱ-ㅁ

③ ㄷ-ㄴ-ㄱ-ㄹ-ㅁ	④ ㄷ-ㄴ-ㅁ-ㄱ-ㄹ

⑤ ㄹ-ㄷ-ㄴ-ㄱ-ㅁ

16. 다음 프로그램의 실행 결과로 옳은 것은? [3점]

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

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

④ 2 3 1 4 5	⑤ 7 5 3 2 1

17. 다음은 토끼와 거북이의 시간별 위치를 초 단위로 출력하는 프로그램이다. 이에 대한 설명으로 옳은 것은? (단, 토끼는 시속 18 km, 거북이는 시속 3 km로 일정하게 달리고 거북이는 토끼보다 300 m 앞에서 출발한다.) [3점]

프로그래밍

C 언어	비주얼 베이직 언어
#include<stdio.h> void main(){ double a, b; double a_d, b_d; int s; a_d=0.0; b_d=300.0; a=18.0*1000/(60*60); b=3.0*1000/(60*60); for(s=1;s<=1000;s++){ a_d=a_d+a; b_d=b_d+b; printf("%d초 후: ", s); printf("%lf ", a_d); printf("%lf \n", b_d); if (a_d>b_d) break; } }	Private Sub Form_Activate() Dim a As Double, b As Double Dim a_d As Double Dim b_d As Double Dim s As Integer a_d = 0: b_d = 300 a = 18 * 1000 / (60 * 60) b = 3 * 1000 / (60 * 60) For s = 1 To 1000 a_d = a_d + a b_d = b_d + b Print s; "초 후: "; Print a_d; Print b_d If a_d>b_d Then Exit For Next s End Sub

① a_d는 거북이의 속도를 저장하는 변수이다.

② for(For)문이 수행되는 횟수는 100회 미만이다.

③ a, b는 정수형 변수로 선언해도 출력 결과가 같다.

④ b는 토끼의 시간당 이동 거리를 저장하는 변수이다.

⑤ a_d, b_d는 정수형 변수로 선언해도 출력 결과가 같다.

71

72

5권 중 3권

72

72

18. 다음은 퀴즈 문제에 대한 단계별 채점 결과와 배점표이다.

[O : 맞음, X : 틀림]
단계 구분	단계1	단계2	단계3	단계4	단계5	단계6
채점 결과	O	X	O	O	X	X
배점	10	20	40	80	160	320

채점 결과를 입력하여 총점을 출력하는 프로그램을 작성하기 위해          에 들어갈 내용으로 옳은 것은? [3점]

ㄱ

C 언어	비주얼 베이직 언어
#include <stdio.h> void main() { int i,c,s; char a[]="OXOOXX"; s=0; c=10; i=0; while(i<6){ if(a[i]=='O') s=s+c; ; i++; } printf("총점=%d",s); }	Private Sub Form_Activate() Dim i, c, s As Integer Dim a() As Variant a() = Array("O","X","O","O","X","X") s = 0: c = 10: i = 0 While i < 6 If a(i) = "O" Then s = s + c End If i = i + 1 Wend Print "총점="; s End Sub

ㄱ

ㄱ

① c=c*2	② c=c/2	③ c=c+2	④ c=c-2	⑤ c=c*10

19. 동일한 슈퍼컴퓨터 A, B를 4명의 학생이 다음 조건에 따라 공동으로 이용한다. 사용 순서와 사용 시간을 표와 같이 배정하였을 때, 8분 후에 슈퍼컴퓨터를 이용하고 있는 학생으로 옳은 것은? (단, 사용자가 교체되는 데 소요되는 시간은 고려하지 않는다.)

프로그래밍

	사용 순서	1	2	3	4	5	6
	배정 학생	철수	영희	순희	갑돌	철수	순희
	사용 시간(분)	3	4	3	5	4	3

[조건]

◦ 2대가 동시에 비어 있을 때는 A부터 사용한다.

◦ 슈퍼컴퓨터는 정확히 배정된 시간만큼 사용한다.

◦ 사용이 끝난 컴퓨터는 곧바로 다음 순서의 학생이 사용한다.

A	B

① 갑돌	영희

② 순희	철수

③ 영희	순희

④ 철수	갑돌

⑤ 철수	영희

20. 다음은 집합 A, B, C에 특정 연산을 수행하는 프로그램이다. 집합 A={1,3,5}, B={3,4,5}, C={1,5,8,9}일 때, 프로그램의 실행 결과로 옳은 것은? [3점]

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

① 5	② 1 3 5	③ 4 8 9

④ 1 3 4 5	⑤ 1 3 4 5 8 9

※ 확인 사항

문제지와 답안지의 해당란을 정확히 기입(표기)했는지 확인하시오.

72

72

5권 중 5권