65
72
5권 중 5권2007학년도 11월 고2 전국연합학력평가 문제지
직업탐구 영역(프로그래밍)
제 4 교시
성명
수험번호
2
1
◦ 먼저 수험생이 선택한 과목의 문제지인지 확인하시오.
◦ 반드시 자신이 선택한 과목의 문제지를 풀어야 합니다.
◦ 문제지에 성명과 수험 번호를 정확히 기입하시오.
◦ 답안지에 수험 번호, 선택 과목, 답을 표기할 때에는 반드시 ‘수험
생이 지켜야 할 일’에 따라 표기하시오.
◦ 문항에 따라 배점이 다르니, 각 물음의 끝에 표시된 배점을 참고하
시오. 3점 문항에만 점수가 표시되어 있습니다. 점수 표시가 없는 문
항은 모두 2점씩입니다.
1.
다음 대화의 (가)에 들어갈 프로그래밍 언어에 대한 설명으로 옳은 것을 <보기>에서 모두 고르면? 그래요. 하지만 컴퓨터가 나온 초창기에는 0과 1의 2진수로 명령어를 표현하는 ( 가 )를 사용해서 무척 어려웠어요. 요즈음 프로그래밍 언어는 자연어에 가까워서 프로그램을 작성하기가 쉬워요. 보 기 ㄱ. 컴퓨터의 기종에 관계 없이 사용할 수 있다. ㄴ. 상속성, 캡슐화, 다형성의 특징을 가지고 있다. ㄷ. 언어 번역기에 의해 변환된 프로그램의 형태이다. ㄹ. 컴퓨터가 프로그램을 직접 인식하여 번역 과정 없이 실행된다. ① ㄱ, ㄴ ② ㄱ, ㄷ ③ ㄴ, ㄷ ④ ㄴ, ㄹ ⑤ ㄷ, ㄹ2.
다음 프로그램의 입력 값이 3일 때, 출력 결과로 옳은 것은? C 언어 비주얼 베이식 언어 #include<stdio.h> void main() { int i, num; printf("num : "); scanf("%d", &num); i=1; do { i=i+1; num=num+1; } while(i<=10); printf("%d", num); }Private Sub Form_Activate() Dim i, num As Integer num = InputBox("num : ") i = 1 Do i = i + 1 num = num + 1 Loop While (i <= 10) Print num End Sub ① 10 ② 11 ③ 12 ④ 13 ⑤ 14
3.
그림은 프로그래밍 용어를 요리와 연관지어 나타낸 것이다. (가)에 들어갈 내용으로 알맞은 것은? ① 로드 ② 변수 ③ 디버그 ④ 메소드 ⑤ 컴파일러4.
다음은 1부터 n까지의 합을 구하는 순서도의 일부이다. 이 순서도를 n!을 구하는 순서도로 변경할 때, (가)부분을 바르게 수정한 것은? ◦ 1부터 n까지의 합 = 1+2+3+ ㆍㆍㆍ +n ◦ n! = 1*2 *ㆍㆍㆍ *(n-2)*(n-1)*n① total = total * i ② total = total * n
③ total = total * n * i ④ total = total * i - 1 ⑤ total = total * n - i
5.
다음 의사 코드에서 출력되는 Z값의 의미로 옳은 것은? [3점] [단계1] : Z의 값을 0 으로 초기화한다. [단계2] : 두 개의 정수를 입력받아 각각 X와 Y에 넣는다. [단계3] : 만약, 정수 X보다 Y가 크면 Z를 출력한 후 종료한다. [단계4] : X에 X-Y의 값을 넣는다. [단계5] : Z의 값을 1 증가시킨 후 [단계3]으로 돌아간다. ① X와 Y 중 큰 수 ② X와 Y 중 작은 수 ③ X와 Y를 곱한 값 ④ X를 Y로 나눈 몫 ⑤ X를 Y로 나눈 나머지 요리 프로그래밍 요리사 프로그래머 요리 순서 알고리즘 요리의 재료 데이터 재료를 담을 그릇 (가)프로그래밍
2
직업탐구 영역(프로그래밍)
5권 중 5권66
72
6.
다음과 같이 10진수를 2진수로 변환하는 프로그램을 작성할 때, (가) 에 들어갈 내용으로 알맞은 것은? [3점] C 언어 비주얼 베이식 언어 #include<stdio.h> void main() { int i, binary, n; i=1, binary=0, n=10; while(1) { binary=binary+(n%2)*i; (가) ; n=(int)(n/2); if(n==0) break; } printf("%d", binary); }Private Sub Form_Activate() Dim i, binary, n As Integer i = 1: binary = 0: n = 10 Do While 1
binary = binary + (n Mod 2) * i (가) n = Int(n / 2) If n = 0 Then Exit Do End If Loop Print binary End Sub ① i = i + 10 ② i = i - 10 ③ i = i * 10 ④ i = i * 100 ⑤ i = i * 1000
7.
다음 프로그램의 출력 결과로 옳은 것은? [3점] C 언어 비주얼 베이식 언어 #include<stdio.h> void main() { int i; int A[]={1, 0, 1, 1}; int B[]={0, 0, 0, 0}; for(i=0; i<=3; i++) { if(i==0) B[i]=A[i]; else if(B[i-1]==A[i]) B[i]=0; else B[i]=1; }for(i=0; i<=3; i++) { printf("%d ", B[i]); }
}
Private Sub Form_Activate() Dim i As Integer
Dim A(), B() As Variant A() = Array(1, 0, 1, 1) B() = Array(0, 0, 0, 0) For i = 0 To 3
If i = 0 Then B(i) = A(i)
ElseIf B(i - 1) = A(i) Then B(i) = 0 Else B(i) = 1 End If Next i For i = 0 To 3 Print B(i); Next i End Sub ① 0 0 0 0 ② 0 1 0 0 ③ 1 0 1 1 ④ 1 1 0 1 ⑤ 1 1 1 1
8.
<보기>에서 오버플로(Overflow)가 발생하는 경우를 모두 고르면? 보 기 ㄱ. 정수형 변수에 문자 데이터를 저장할 때 ㄴ. 정수형 변수의 표현 가능 범위보다 큰 값을 저장할 때 ㄷ. 5개의 데이터를 저장할 수 있는 스택에 6개의 데이터를 저장 할 때 ① ㄱ ② ㄴ ③ ㄱ, ㄷ ④ ㄴ, ㄷ ⑤ ㄱ, ㄴ, ㄷ9.
다음은 정사각형의 개수를 구하는 원리를 나타낸 것이다. 이 원리를 프로그램으로 작성할 때, (가) 에 들어갈 내용으로 알맞은 것은? [3점] C 언어 비주얼 베이식 언어 #include<stdio.h> int a(int n) { if(n<=1) return 1; else return (가) ; } void main() { int n; scanf("%d", &n); printf("%d", a(n)); }Function a(n) As Integer If n <= 1 Then a = 1 Else a = (가) End If End Function
Private Sub Form_Activate() Dim n As Integer n = InputBox("") Print a(n) End Sub ① n + a(n + 1) ② n - a(n + 1) ③ n + a(n - 1) ④ n * n - a(n + 1) ⑤ n * n + a(n - 1)
10.
다음 내용에 해당하는 자료 구조로 옳은 것은? 프로그램을 작성하던 중 변수의 개수가 너무 많아 변수를 구분 하는데 어려움을 겪을 것으로 예상하여, 그림과 같이 여러 개의 동일한 자료형 변수를 첨자로 구별하는 자료 구조를 사용하였다. ① 큐 ② 배열 ③ 스택 ④ 트리 ⑤ 구조체프로그래밍
3
직업탐구 영역(프로그래밍)
71
72
5권 중 5권11.
도표로 제시한 프로그램 작성 절차에서 (가)에 들어갈 단계에 대한 설명으로 알맞은 것은? [3점] ① 명령문을 입력하는 단계 ② 명령의 순서를 단계별로 도표화하는 단계 ③ 업무 전반에 대한 문제를 분석하고 결정하는 단계 ④ 어떤 매체로 어떻게 입력할 것인지 설계하는 단계 ⑤ 프로그램에 관계되는 모든 자료를 문서화하는 단계12.
다음 프로그램의 출력 결과로 옳은 것은? [3점] C 언어 비주얼 베이식 언어 #include<stdio.h> void main() { int i, j; char A[3][2]; A[0][0]='a'; A[0][1]=2; A[1][0]='c'; A[1][1]=0; A[2][0]='b'; A[2][1]=1; i=0; for(j=0; j<=2; j++) { printf("%c", A[i][0]); i=A[i][1]; } }Private Sub Form_Activate() Dim i, j As Integer
Dim A(3, 2) As String A(0, 0) = "a": A(0, 1) = 2 A(1, 0) = "c": A(1, 1) = 0 A(2, 0) = "b": A(2, 1) = 1 i = 0 For j = 0 To 2 Print A(i, 0); i = A(i, 1) Next j End Sub
① abc ② acb ③ bca
④ cab ⑤ cba
13.
다음은 세 가지 조명 색상을 혼합하여 만든 색상표이다. ‘빨강색’의 연산식으로 옳은 것은? (단, 조명 색상 값이 1이면 ON, 0이면 OFF임) 입력(조명 색상) 출력 R(빨강) G(초록) B(파랑) 색상 0 0 0 검정색 0 0 1 파랑색 0 1 0 초록색 0 1 1 하늘색 1 0 0 빨강색 1 0 1 보라색 1 1 0 노랑색 1 1 1 흰색 C 언어 비주얼 베이식 언어 ① !R || G || B (Not R) Or G Or B② R && !G || B R And (Not G) Or B
③ !R && G && B (Not R) And G And B
④ !R || G && !B (Not R) Or G And (Not B)
⑤ R && !G && !B R And (Not G) And (Not B)
14.
그림과 같이 디스켓을 박스 단위와 잔여분으로 나누는 프로그램을 작성할 때, 밑줄 친 (가)를 대체할 수 있는 코드로 알맞은 것은? (단, 디스켓 1박스는 10개이다.) [n=12인 경우] 1박스 2개 C 언어 비주얼 베이식 언어 #include<stdio.h> void main() { int n; printf("개수 입력: "); scanf("%d", &n); if(n%10==0) printf("%d박스", (int)(n/10)); else { printf("%d박스 ", (int)(n/10)); printf("%d개", n%10); } (가) }Private Sub Form_Activate() Dim n As Integer
n = InputBox("개수 입력: ") If (n Mod 10) = 0 Then Print Int(n / 10) & "박스" Else
Print Int(n / 10) & "박스 "; Print n Mod 10 & "개" (가) End If End Sub C 언어 비주얼 베이식 언어 ① n-(n*10) n - (n * 10) ② n-(n%10) n - (n Mod 10) ③ n-(n*10)*10 n - (n * 10) * 10 ④ n-(int)(n/10) n - Int(n / 10) ⑤ n-(int)(n/10)*10 n - Int(n / 10) * 10
15.
그림과 같이 거미는 전날보다 1.2배 긴 거미줄을 만든다. n일까지 만든 거미줄의 총 길이(A)를 구하는 프로그램을 작성할 때, (가) 에 들어갈 내용으로 알맞은 것은? [3점] C 언어 비주얼 베이식 언어 #include<stdio.h> void main() { int i, n; double A, x; x=1, A=0; scanf("%d", &n); for(i=1; i<=n; i++) { A=A+x;(가) ; }
printf("%f", A); }
Private Sub Form_Activate() Dim i, n As Integer Dim A, x As Double x = 1: A = 0 n = InputBox("") For i = 1 To n A = A + x (가) Next i Print A End Sub ① x = x + 1.2 ② x = x * 1.2 ③ x = A + 1.2 ④ x = A * 1.2 ⑤ x = A * x * 1.2
프로그래밍
4
직업탐구 영역(프로그래밍)
5권 중 5권72
72
16.
그림은 배열 A의 요소 값을 배열 B에 역순으로 저장하는 방법을 나타낸 것이다. 배열 A[i]가 저장될 배열 B[j]를 바르게 나타낸 것은? [3점] ◦배열 A의 요소의 개수는 n개이다. [n=5인 경우] ① B[i] ② B[n] ③ B[n-1] ④ B[n-i] ⑤ B[n-1-i]17.
다음 프로그램의 입력 값이 74일 때, 출력 결과로 옳은 것은? C 언어 비주얼 베이식 언어 #include<stdio.h> void main() { int i, j; char arr[]={'B','C','D'}; scanf("%d", &i); j=(int)(i/10); if(j<6) printf("F"); else if(j>=9) printf("A"); else printf("%c", arr[8-j]); }Private Sub Form_Activate() Dim i, j As Integer
Dim arr() As Variant
arr() = Array("B", "C", "D") i = InputBox("") j = Int(i / 10) If j < 6 Then Print "F" ElseIf j >= 9 Then Print "A" Else Print arr(8 - j) End If End Sub ① A ② B ③ C ④ D ⑤ F
18.
다음 프로그램의 ㉠~㉤에서 문법적으로 옳지 않은 것을 고르면? C 언어 비주얼 베이식 언어 #include<stdio.h> void main() { ㉠ /* 덧셈 프로그램 작성 */ ㉡ int a, b, if, for;㉢ a=10, b=20; ㉣ if=a+b; ㉤ for=if*10; printf("%d %d", a, b); }
Private Sub Form_Activate() ㉠ Rem 덧셈 프로그램 작성 ㉡ Dim a, b, If, For As Integer ㉢ a = 10: b = 20 ㉣ If = a + b ㉤ For = If * 10 Print a; b End Sub ① ㉠, ㉡, ㉢ ② ㉠, ㉡, ㉣ ③ ㉠, ㉢, ㉤ ④ ㉡, ㉣, ㉤ ⑤ ㉢, ㉣, ㉤
19.
다음과 같이 출력하는 프로그램을 작성할 때, (가) 에 들어갈 내용으로 알맞은 것은? [3점]1
234
56789
C 언어 비주얼 베이식 언어 #include<stdio.h> void main() { int i, j, sp, k; k=0;for(i=1; i<=3; i++) { for(sp=10-i; sp>=0; sp--) printf(" "); for(j=1; j<=i*2-1; j++) { k= (가) ; printf("%d", k); } printf("\n"); } }
Private Sub Form_Activate() Dim i, j, sp, k As Integer k = 0 For i = 1 To 3 For sp = 10 - i To 0 Step -1 Print " "; Next sp For j = 1 To i * 2 - 1 k = (가) Print Format(k, "#"); Next j Print Next i End Sub ① k - 1 ② k + 1 ③ k + i ④ k + j ⑤ k + i + j
20.
다음은 버블 정렬의 과정을 나타낸 것이다. [단계 2]에 들어갈 내용으로 옳은 것은? [3점] ◦ 배열 x의 첨자 i는 0부터 n-1까지x[i] > x[i+1] : x[i]와 x[i+1]을 교환한다. x[i] ≦ x[i+1] : 데이터를 그대로 둔다. ◦ 위 과정을 n-1번 수행한다. ① 3 1 4 7 9 ② 4 1 3 7 9 ③ 1 4 7 3 9 ④ 1 4 3 7 9 ⑤ 1 3 4 7 9