1. (가)~(다)는 프로그래밍의 개요에 대한 ○, × 문항이다. 답안을 옳게 표시한 것은?

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

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

제 4 교시

성명			수험번호						3

직업탐구 영역

(프로그래밍)

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

직업탐구 영역

(프로그래밍)

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

25

52

2권 중 2권

문항		답안
(가)	디버깅은 프로그램의 오류를 수정하는 것이다.
(나)	문법 오류는 프로그램의 실행 과정에서 발생한다.
(다)	알고리즘이란 주어진 문제를 해결할 수 있는 방법을 단계별로 기술한 것이다.

	(가)	(나)	(다)			(가)	(나)	(다)
①	○	○	○		②	○	○	×
③	○	×	○		④	×	○	×
⑤	×	×	○

2. 철수는 농장에서 키우는 가축을 강 건너 시장에 팔기로 했다. [조건]에 따라 240만 원어치 가축을 팔기 위해 치러야 할 최소 뱃삯으로 옳은 것은?

[조건] ◦ 가축의 종류와 가격은 아래와 같다. ◦ 가축의 수는 각각 10 마리 이상이다. ◦ 가축의 뱃삯은 종류, 크기, 무게에 관계없이 한 마리당 100원이다.
50만 원	10만 원	5만 원	1만 원	5천 원

① 700원	② 800원	③ 1,000원

④ 1,100원	⑤ 1,200원

3. 변수 a ~ e 중 대입한 자료가 손실 또는 오류 없이 정확하게 저장되는 것만을 있는 대로 고른 것은?

C 언어	비주얼 베이직 언어
char a, b; int c, d; float e; a="A"; b=100; c=6000; d=3.14159; e=3.5E-15;	Dim a As Byte, b As Byte Dim c As Integer, d As Integer Dim e As Single a = "A" b = 100 c = 6000 d = 3.14159 e = 3.5E-15

① a, c	② b, e	③ a, c, d

④ b, c, d	⑤ b, c, e

[4 ~ 5] 다음 순서도를 보고 물음에 답하시오.

4. 순서도에 따라 처리하였을 때, 출력될 수 없는 값은?

① 4	② 10	③ 16	④ 18	⑤ 22

5. 순서도에서 출력되는 수를 판별하는 논리식으로 옳은 것은?

(단, 0 ≦ n < 100)

	C 언어	비주얼 베이직 언어
①	n/2 == 0 || n/3 == 1	n \ 2 = 0 Or n \ 3 = 1
②	n/2 == 0 && n/3 == 1	n \ 2 = 0 And n \ 3 = 1
③	n%2 == 0 || n%3 == 1	n Mod 2 = 0 Or n Mod 3 = 1
④	n%2 == 1 || n%3 == 2	n Mod 2 = 1 Or n Mod 3 = 2
⑤	n%2 == 0 && n%3 == 1	n Mod 2 = 0 And n Mod 3 = 1

6. 그림은 공장 A ~ E에서 부품을 생산하여 F에서 완성품을 만들어 가는 과정을 나타낸 것이다. [조건]에 따라 제품을 생산할 때, 완성품이 나오기까지 소요되는 일수로 옳은 것은? [3점]

[조건]

◦ 작업 일수 이외의 기타 소요 시간은 고려하지 않는다.

◦ 각 공장은 필요 부품이 모두 도달해야 작업을 시작한다.

◦ 각 공장은 부품을 생산하여 화살표에 따라 필요 부품을 인근 공장으로 보낸다.

① 16	② 17	③ 18	④ 21	⑤ 24

7. 그래프는 어떤 주유소의 요일별 연평균 휘발유 가격과 판매량을 나타낸 것이다. 그래프를 보고 [조건]을 만족하는 프로그램을 작성하기 위해 분석한 내용 중 옳지 않은 것은? [3점]

[조건]

◦ 평균값은 소수점 첫 째 자리까지 구한다.

◦ 매출액은 휘발유 가격(원/[eqn: LITER])×판매량([eqn: LITER])이다.

◦ 휘발유 가격이 1,500원 이상이면 ‘고유가’를 출력한다.

① 연간 총 판매량은 2바이트 정수형 변수에 저장할 수 있다.

② 조건문을 사용하면 금액에 따라 ‘고유가’를 출력할 수 있다.

③ 실수형 변수를 사용하면 요일별 휘발유 가격을 저장할 수 있다.

④ 요일, 휘발유 가격, 판매량을 하나의 구조체로 선언할 수 있다.

⑤ 요일별 매출액의 평균값은 2바이트 정수형 변수로 처리하기 어렵다.

8. 그림과 같이 흰 돌과 검은 돌이 일렬로 줄 지어 있을 때, 연속된 검은 돌의 최대 개수를 구하는 프로그램을 작성하고자 한다.  에 들어갈 문장으로 옳은 것은? [3점]

●	●	●	○	●	●	○	●	●	●	●

C 언어	비주얼 베이직 언어
#include <stdio.h> void main() { int a=0, n=11; int max=0, cnt=0; int x[11]={1,1,1,0,1,1,0,1,1,1,1}; while(a<n){ if(x[a]==1) cnt=cnt+1; else{ if(cnt>max) max=cnt; ; } a=a+1; } if(cnt>max) max=cnt; printf("최대 개수=%d", max); }	Private Sub Form_Activate() Dim a, n As Integer Dim max, cnt As Integer Dim x() As Variant x()=Array(1,1,1,0,1,1,0,1,1,1,1) a=0: n=11: max=0: cnt=0 While a < n If x(a) = 1 Then cnt = cnt + 1 Else If cnt>max Then max=cnt End If a = a + 1 Wend If cnt>max Then max=cnt Print "최대 개수="; max End Sub

① cnt=0	② cnt=1	③ cnt=a

④ cnt=cnt+1	⑤ cnt=cnt-1

9. 그림은 자동자 경주의 중간 상황이다.

다음 논리식에서 a, b, c, d는 동건, 영일, 인성, 현민이의 현 위치에서 결승선까지 남은 거리이다. 논리식의 결과가 ‘참’일 때, (가), (나)에 해당하는 사람으로 옳은 것은? [3점]

C 언어	(c>b) && (b<d) && (a<c) && (a>b)
비주얼 베이직 언어	(c>b) And (b<d) And (a<c) And (a>b)

(가)        (나)              (가)        (나)

①  동건        영일	②  동건        인성

③  영일        동건	④  인성        동건

⑤  인성        영일

10. 그림과 같이 점수가 표기된 원판 A ~ F가 일렬로 줄지어 있다. [조건]에 따라 4개의 원판을 선택할 때, 얻을 수 있는 최대 점수로 옳은 것은?

	[조건] ◦ 원판 F는 반드시 선택한다. ◦ 6개의 원판 중 연속된 3개 이상의 원판을 선택할 수 없다.

① 35	② 38	③ 40	④ 42	⑤ 43

26

52

2권 중 2권

26

52

2권 중 2권

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

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

① 50의 약수를 출력한다.

② 50보다 작은 3의 배수의 합을 출력한다.

③ 50보다 작은 3의 배수의 개수를 출력한다.

④ 50보다 작은 짝수 중 3의 배수의 개수를 출력한다.

⑤ 50보다 작은 홀수 중 3의 배수의 개수를 출력한다.

12. 표와 같이 무게와 가격이 다른 5개의 보석(A ~ E)이 있다. 이 중 일부를 용량이 30g인 상자에 담고자 한다. 상자의 용량을 초과하지 않는 범위에서 담을 수 있는 보석의 최대 가격으로 옳은 것은?

구분	A	B	C	D	E
무게(g)	5	10	20	6	8
가격(원)	50	60	130	30	90

① 190원	② 200원	③ 220원	④ 230원	⑤ 250원

13. 다음 프로그램 실행 결과 출력되는 값으로 옳은 것은?

C 언어	비주얼 베이직 언어
#include <stdio.h> void main() { int a, s; char x[]={'X','O','O','X','O'}; char y[]={'O','O','X','X','O'}; s=0; for(a=0; a<5; a++){ if(x[a]==y[a]) s=s+2; } printf("%d",s); }	Private Sub Form_Activate() Dim a, s, x(), y() As Variant x()=Array("X","O","O","X","O") y()=Array("O","O","X","X","O") s = 0 For a = 0 To 4 If x(a) = y(a) Then s = s + 2 End If Next a Print s End Sub

① 2	② 4	③ 6	④ 8	⑤ 10

14. 그림과 같이 배열 m의 내용을 구조가 다른 배열 k로 옮기려고 한다.  에 들어갈 문장으로 옳은 것은? [3점]

배열 m

배열 k

1	2	3
4	5	6

⇒

6	3
5	2
4	1

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

① y=b	② y=1-b	③ y=b-1	④ y=2-b	⑤ y=b-2

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

C 언어	비주얼 베이직 언어
#include <stdio.h> int f(int a, int b) { if(a<b) return a; else return b; } void main() { int p; p=f(5,f(7,f(10,f(3,20)))); printf("%d", p); }	Function f(a, b) As Integer If a < b Then f = a Else f = b End If End Function Private Sub Form_Activate() Dim p As Integer p = f(5, f(7, f(10, f(3, 20)))) Print p End Sub

① 3	② 5	③ 7	④ 10	⑤ 20

27

52

2권 중 2권

16. 그림과 같은 형태의 지역과 도로망을 가진 어떤 도시의 버스들은 [규칙]에 따라 운행한다.

[규칙]

◦ 출발 지역과 도착 지역 사이의 모든 정류장에 정차한다.

◦ 출발 지역에서 도착 지역까지의 운행 비용이 최소가 되도록 운행한다.

프로그램은 3자리 버스 번호를 입력하면 그 버스의 출발 지역과 도착 지역을 출력해 준다. 1지역에서 승차하여 2지역에서 하차하고자 할 때, 타야할 버스 번호로 옳은 것은?

C 언어	비주얼 베이직 언어
#include <stdio.h> void main() { int a, b, c; scanf("%d", &a); b=a/100; c=a%10; printf("출발 지역 %d \n", b); printf("도착 지역 %d \n", c); }	Private Sub Form_Activate() Dim a, b, c As Integer a = Val(InputBox("")) b = a \ 100 c = a Mod 10 Print "출발 지역:"; b Print "도착 지역:"; c End Sub

① 134	② 135	③ 143	④ 312	⑤ 462

17. 다음 프로그램의 실행 결과 출력되는 수로 옳은 것은?

C 언어	비주얼 베이직 언어
#include <stdio.h> void main() { int a; double b; b=0; for(a=1; a<3; a++) b=b+a / 2.0; printf("%d", (int)b); }	Private Sub Form_Activate() Dim a As Integer Dim b As Double b = 0 For a = 1 To 2 b = b + a / 2# Next a Print Int(b) End Sub

① 1       ② 1.5        ③ 2        ④ 2.5        ⑤ 3

18. 그림은 단계가 진행될수록 원의 개수가 2배씩 증가하는 원 안에 순서대로 숫자를 채우고 선분으로 이은 것이다.

임의의 두 수 n1과 n2 사이를 연결하는 선분의 수를 구하는 프로그램을 작성하고자 할 때,  에 들어갈 문장으로 옳은 것은? [3점]

C 언어	비주얼 베이직 언어
#include <stdio.h> void main() { int cnt; int n1, n2, temp; cnt=0; scanf("%d", &n1); scanf("%d", &n2); while(n1 != n2){ if(n1>n2){ temp=n1; n1=n2; n2=temp; } ; cnt=cnt+1; } printf("%d", cnt); }	Private Sub Form_Activate() Dim cnt, temp As Integer Dim n1 As Integer Dim n2 As Integer cnt = 0 n1 = Val(InputBox("")) n2 = Val(InputBox("")) While (n1 <> n2) If n1 > n2 Then temp = n1 n1 = n2 n2 = temp End If cnt = cnt + 1 Wend Print cnt End Sub

	C언어	비주얼 베이직 언어
①	n1=n1/2	n1 = n1 \ 2
②	n2=n2/2	n2 = n2 \ 2
③	n2=n1*2	n2 = n1 * 2
④	n1=n1-2	n1 = n1 - 2
⑤	n2=n2-2	n2 = n2 - 2

19. 다음 프로그램의 출력 결과가 SAO일 때, 배열 n에 들어갈 문자열로 옳은 것은? [3점]

C 언어	비주얼 베이직 언어
#include <stdio.h> void main() { int a, b, c; char n[3]; /*문자열 입력*/ int m[3][3]= {{'A','B','C'}, {'D','G','O'}, {'S','T','U'}}; for(a=0; a<3; a++) for(b=0; b<3; b++) for(c=0; c<3; c++) if(n[a]==m[b][c]) printf("%c", m[c][b]); }	Private Sub Form_Activate() Dim a, b, c As Integer Dim n(2) As String '문자열 입력 Dim m(2, 2) As String m(0,0)="A":m(0,1)="B":m(0,2)="C" m(1,0)="D":m(1,1)="G":m(1,2)="O" m(2,0)="S":m(2,1)="T":m(2,2)="U" For a = 0 To 2 For b = 0 To 2 For c = 0 To 2 If n(a) = m(b, c) Then Print m(c, b); End If Next c: Next b: Next a End Sub

① BUS	② CAT	③ DOG	④ DOT	⑤ GOD

20. 다음은 양의 정수를 연속된 정수의 합으로 표현할 수 있는 방법과 총 가짓수를 나타낸 예이다. 총 가짓수를 출력하는 프로그램을 작성하기 위해  에 들어갈 식으로 옳은 것은? [3점]

◦ 9 = 9 ◦ 9 = 4+5 ◦ 9 = 2+3+4	총 3가지(9 자신도 포함)

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

① a+1	② a+b	③ a-b	④ a*b	⑤ b-a

1

52

2권 중 2권

※ 확인 사항

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

28

52

2권 중 2권