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

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

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

성명			수험번호						3

직업탐구영역

프로그래밍

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

직업탐구영역

프로그래밍

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

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

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

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

※ 프로그래밍 과목에서는 문제 풀이를 위해 제시된 자료와 답지의 프로그램 코드가 C 언어와 Visual Basic 언어로 되어 있습니다. 수험생은 두 언어 중 어느 것을 선택해서 문제를 해결해도 됩니다.

프로그래밍

1. 그림은 가게에서 손님과 주인이 대화하는 장면이다. 가게 주인이 손님에게 줄 거스름돈 중 1,000원 미만인 동전을 계산하는 수식으로 옳은 것은?

	C 언어	Visual Basic 언어
①	c=b-1000/a	c = b - 1000 \ a
②	c=b-a/1000	c = b - a \ 1000
③	c=b-a%1000	c = b - a Mod 1000
④	c=(b-a)/1000	c = (b - a) \ 1000
⑤	c=(b-a)%1000	c = (b - a) Mod 1000

2. 프로그래밍 언어에 관한 옳은 설명을 <보기>에서 모두 고른 것은?

		< 보 기 >
	ㄱ. 객체지향 언어에는 자바, 비주얼 C++ 등이 있다. ㄴ. 기계어는 컴퓨터가 처리할 수 있는 0과 1로 표현된 언어이다. ㄷ. 고급언어로 작성된 프로그램은 별도의 번역 과정 없이 컴퓨터에서 실행 가능하다. ㄹ. 프로그래밍 언어에는 컴퓨터가 쉽게 처리할 수 있는 고급언어와 사용자가 이해하기 쉬운 저급언어가 있다.

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

④ ㄱ, ㄴ, ㄷ	⑤ ㄴ, ㄷ, ㄹ

3. 철수가 공원에서 여가 활동을 하기 위한 순서도의 일부이다. 이 순서도에 대한 설명으로 옳지 않은 것은? [3점]

① 철봉을 한 다음 산책을 한다.

② 줄넘기를 한 다음 산책을 한다.

③ 줄넘기와 철봉을 하지 않고 산책을 한다.

④ 줄넘기, 철봉 및 산책을 하지 않고 집에 간다.

⑤ 줄넘기는 하지 않고 철봉을 한 다음 산책을 한다.

65

72

5권 중 5권

4. 다음은 반별 시합에서 각 종목별로 얻은 환산점수를 표로 나타낸 자료이다.

반	축구	배구	농구	피구
1	70	80	90	100
2	80	100	80	90
3	90	70	100	70
4	100	90	70	80

배열을 이용하여 처리하고자 할 때 옳게 선언한 것은?

C 언어	Visual Basic 언어

①	int a[4];	Dim a(3) As Integer

②	int a[5];	Dim a(4) As Integer

③	int a[3][5];	Dim a(2, 4) As Integer

④	int a[4][5];	Dim a(3, 4) As Integer

⑤	int a[2][2][3];	Dim a(1, 1, 2) As Integer

5. 10부터 20까지의 짝수(10, 12, 14, …, 20)를 출력하기 위한 프로그램이다. , 에 들어갈 내용으로 알맞은 것은?

가

나

프로그래밍

C 언어	Visual Basic 언어
#include <stdio.h> void main( ) { int a; for(a=10; ; ) 가 나 printf("%d ", a); }	Private Sub Form_Activate( ) Dim a As Integer For a=10 To Step 가 나 Print a; Next a End Sub

	C 언어			Visual Basic 언어
	가	나		가	나
①	a<=19	a++		19	1
②	a<=19	a+=2		19	2
③	a<=20	a++		20	1
④	a<=20	a+=2		20	2
⑤	a<=22	a+=2		22	2

6. 프로그램의 실행 결과 출력되는 값으로 옳은 것은? [3점]

C 언어	Visual Basic 언어
#include <stdio.h> #include <string.h> void main( ) { char c[ ][5]={"good", "bye"}; int a, h=0; for(a=0; a<=1; a++) h+=strlen(c[a]); printf("%d\n", h); }	Private Sub Form_Activate( ) Dim a As Integer, h As Integer Dim c(2) As String h = 0 c(0) = "good": c(1) = "bye" For a = 0 To 1 h = h + Len(c(a)) Next a Print h End Sub

① 3	② 4	③ 7	④ 9	⑤ 10

7. 1부터 100까지 홀수의 합을 구하는 프로그램이다. 논리적 오류가 발생하는 곳은?

C 언어	Visual Basic 언어
#include <stdio.h> void main( ) { int a, sum; ㉠ sum=-1; ㉡ for(a=1; a<=100; a++) ㉢ if(a%2==1) ㉣ sum+=a; ㉤ printf("%d\n", sum); }	Private Sub Form_Activate( ) Dim a As Integer Dim sum As Integer ㉠ sum = -1 ㉡ For a = 1 To 100 ㉢ If a Mod 2 = 1 Then ㉣ sum = sum + a End If Next a ㉤ Print sum End Sub

① ㉠	② ㉡	③ ㉢	④ ㉣	⑤ ㉤

8. 프로그램의 실행 결과 출력될 수 없는 것은?(단, n의 값은 키보드로 입력받는다.) [3점]

C 언어	Visual Basic 언어
#include <stdio.h> void main( ) { int n; do{ printf("n=?"); scanf("%d", &n); }while(n<2 n>50); printf("%d\n", n); }	Private Sub Form_Activate( ) Dim n As Integer Do n = Val(InputBox("n=?")) Loop While n < 2 Or n > 50 Print n End Sub

① 1	② 2	③ 10	④ 20	⑤ 50

9. 다음은 어떤 프로그램의 일부이다. 이에 대한 설명으로 옳은 것은?

C 언어	Visual Basic 언어
if(a!=b) y=1; else y=0;	If a < > b Then y = 1 Else y = 0 End If

① a와 b의 값에 관계없이 y값이 1이 된다.

② a와 b의 값이 서로 다를 경우에 y값이 1이 된다.

③ a와 b의 값이 서로 다를 경우에 y값이 0이 된다.

④ a와 b의 값이 모두 1일 경우에 y값이 1이 된다.

⑤ a와 b의 값이 모두 0일 경우에 y값이 1이 된다.

66

72

5권 중 5권

10. 프로그램의 실행 결과 출력되는 값에 대한 설명으로 옳은 것은? [3점]

C 언어	Visual Basic 언어
#include <stdio.h> void main( ) { int a, s; a=0; s=0; while(a<50){ a++; s+=a; } printf("%d\n", s); }	Private Sub Form_Activate( ) Dim a As Integer, s As Integer a=0: s=0 While a<50 a = a + 1 s = s + a Wend Print s End Sub

① 1부터 49까지의 자연수

② 1부터 50까지의 자연수

③ 2부터 50까지의 자연수

④ 1부터 50까지의 자연수 합

⑤ 2부터 49까지의 자연수 합

11. 프로그램의 실행 결과 출력되는 내용으로 옳은 것은?

프로그래밍

C 언어	Visual Basic 언어
#include <stdio.h> void main( ) { int num[ ]={1,0,1,0,1}; int res[5]; int a; for(a=0; a<=4; a++){ if(num[a]==0) res[a]=1; else res[a]=0; } for(a=0; a<=4; a++) printf("%d ", res[a]); }	Private Sub Form_Activate( ) Dim num( ) As Variant Dim res(4) As Integer Dim a As Integer num( )=Array(1,0,1,0,1) For a = 0 To 4 If num(a) = 0 Then res(a) = 1 Else res(a) = 0 End If Next a For a = 0 To 4 Print res(a); Next a End Sub

① 0 0 0 0 0	② 0 1 0 1 0

③ 1 0 1 0 1	④ 1 1 0 0 1

⑤ 1 1 1 1 1

71

72

5권 중 5권

12. <보기>와 같은 데이터가 배열 b에 저장되었을 때, 프로그램 실행 결과‘오류’ 를 출력하는 것은? [3점]

〈 보 기 〉

ㄱ.	1	1	1	1	1	1	1	1
ㄴ.	0	1	1	0	1	0	1	1
ㄷ.	0	0	0	0	1	1	1	1
ㄹ.	1	1	1	0	0	0	1	0
ㅁ.	1	0	0	0	0	0	0	1

C 언어	Visual Basic 언어
#include <stdio.h> void main( ) { int a, p, b[8]; p=0; for(a=0; a<=7; a++) if(b[a]==1) p++; if(p%2==1) printf("오류\n"); }	Private Sub Form_Activate( ) Dim a As Integer, p As Integer Dim b(7) As Integer p = 0 For a = 0 To 7 If b(a) = 1 Then p = p + 1 End If Next a If p Mod 2 = 1 Then Print "오류" End If End Sub

① ㄱ	② ㄴ	③ ㄷ	④ ㄹ	⑤ ㅁ

13. 다음 프로그램에서 입력 값이 6일 때 출력되는 값으로 옳은 것은? [3점]

C 언어	Visual Basic 언어
#include <stdio.h> void main( ) { int a, n; int da[7]={3,7,0,1,6,5}; a=0; printf("d="); scanf("%d", &n); while(a<6 && da[a]!= n) a++; if(a<6) printf("%d", a+1); }	Private Sub Form_Activate( ) Dim n As Integer Dim a As Integer Dim da(7) As Integer da(0) = 3: da(1) = 7 da(2) = 0: da(3) = 1 da(4) = 6: da(5) = 5 a = 0 n=Val(InputBox("d=")) While a<6 And da(a)< >n a = a + 1 Wend If a < 6 Then Print a + 1 End If End Sub

① 1	② 2	③ 3	④ 4	⑤ 5

14. 다음은 어떤 수를 출력하기 위한 알고리즘이다. 이를 실행할 경우 출력되는 값에 속하는 것은? [3점]

(1) 변수 A에 1을 대입한다.

(2) A가 5의 배수이면 A를 출력한다.

(3) A를 1씩 증가한다.

(4) A가 30보다 작으면 (2)로 가고, 그렇지 않으면 종료한다.

① 4	② 13	③ 17	④ 25	⑤ 30

15. 프로그램의 실행 결과 출력되는 값으로 옳은 것은? [3점]

C 언어	Visual Basic 언어
#include <stdio.h> void sum(int b); void main( ) { int a=6; sum(a); } void sum(int b) { int k, s=0; for(k=10; k>=b; k--) if(k%2==0) s+=k; printf("%d\n", s); }	Private Sub Form_Activate( ) Dim a As Integer a = 6 : Call sum(a) End Sub Private Sub sum(ByVal _ b As Integer) Dim k As Integer, s As Integer s = 0 For k = 10 To b Step -1 If k Mod 2 = 0 Then s = s + k End If Next k Print s End Sub

① 10	② 18	③ 24	④ 28	⑤ 30

16. 프로그램의 실행 결과 출력되는 내용으로 옳은 것은?

프로그래밍

C 언어	Visual Basic 언어
#include <stdio.h> void main( ) { int k; char pw[ ]={'a', 'b', 'd'}; for(k=0; k<=2; k++) switch(pw[k]){ case 'a': printf("3 "); break; case 'b': printf("2 "); break; default: printf("1 "); } }	Private Sub Form_Activate( ) Dim pw( ) As Variant Dim k As Integer pw( ) = Array("a", "b", "d") For k = 0 To 2 Select Case pw(k) Case "a": Print 3; Case "b": Print 2; Case Else: Print 1; End Select Next k End Sub

① 1  2  3	② 1  3  2	③ 2  3  1

④ 3  1  2	⑤ 3  2  1

72

72

5권 중 5권

17. 프로그램을 실행한 후 <보기>의 데이터를 입력하였을 때 출력 결과가 다른 것은? [3점]

< 보 기 >

	k	e
ㄱ.	75	100
ㄴ.	78	100
ㄷ.	88	100
ㄹ.	95	95
ㅁ.	100	79

k

C 언어	Visual Basic 언어
#include <stdio.h> void main( ) { int k, e; float a; printf("k e="); scanf("%d %d", &k, &e); a=(k+e)/2.0; if((k==100 e==100) && a>=90) printf("우수상\n"); }	Private Sub Form_Activate( ) Dim k As Integer Dim e As Integer Dim a As Single k = Val(InputBox("k=")) e = Val(InputBox("e=")) a = (k + e) / 2 If((k=100 Or e=100) _ And a>=90) Then Print "우수상" End If End Sub

① ㄱ	② ㄴ	③ ㄷ	④ ㄹ	⑤ ㅁ

18. 프로그램의 실행 결과 출력되는 값으로 옳은 것은?

C 언어	Visual Basic 언어
#include <stdio.h> int k(int n){ return(n*n); } void main( ){ int a; a=10; printf("%d\n", k(a)); }	Function k(ByVal n As Integer) _ As Integer k = n * n End Function Private Sub Form_Activate( ) Dim a As Integer a = 10 Print k(a) End Sub

① 5	② 10	③ 25	④ 50	⑤ 100

【19 - 20 】정렬 알고리즘을 이용하여 데이터를 정렬하는 프로그램이다. 물음에 답하시오.

C 언어	Visual Basic 언어
#include <stdio.h> void main( ) { static int p[6]={6,5,3,7,4}; int a, b, t; for(a=1; a<=5; a++){ t=p[a]; b=a-1; while(b>=0 && t<p[b]) { } p[b+1]=t; } for(a=1; a<=5; a++) printf("%d ", p[a]); }	Private Sub Form_Activate( ) Dim p(5) As Integer Dim a As Integer Dim b As Integer Dim t As Integer p(1)=6: p(2)=5: p(3)=3 p(4) = 7: p(5) = 4 For a = 1 To 5 t = p(a) b = a - 1 While b >= 0 And t < p(b) Wend p(b + 1) = t Next a For a = 1 To 5 Print p(a); Next a End Sub

19.  안에 들어갈 내용으로 알맞은 것은? [3점]

	C 언어	Visual Basic 언어
①	p[b]=p[a]; a--;	p(b)=p(a): a=a-1
②	p[b]=p[b+1]; b--;	p(b)=p(b+1): b=b-1
③	p[b+1]=p[b]; b++;	p(b+1)=p(b): b=b+1
④	p[b]=p[b+1]; b++;	p(b)=p(b+1): b=b+1
⑤	p[b+1]=p[b]; b--;	p(b+1)=p(b): b=b-1

20. 삽입 정렬 프로그램을 완성하여 실행하였을 때, 출력된 내용 중 마지막 값으로 옳은 것은?

① 5	② 6	③ 7	④ 8	⑤ 9

※  확인 사항

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