7급 국가직 프로그래밍언어론 2012년 기출문제

시행 2012-07-28 · 책형 인 · 20문항 · 출처: 인사혁신처 공개 기출(공공데이터포털, 이용허락 제한 없음)

전체 풀기 (시험 모드)원본 PDF 받기2012 7급 국가직 전과목
1.
다음 C 프로그램의 실행 결과로 옳은 것은?
#include <stdio.h>

void main() {
	printf("%d\n", 8 >> 2 ? 2 | 1 : 2 & 1);
}
프로그래밍언어론
  1. ①0
  2. ②1
  3. ③2
  4. ④3
정답 보기

정답 ④ · 해설 보기

2.
C 언어와 Java 언어의 데이터 타입에 대한 설명으로 옳지 않은 것은?
프로그래밍언어론
  1. ①C 언어는 문자 타입을 ASCII 코드값으로 표현하고, Java 언어는 문자 타입을 Unicode 코드값으로 표현한다.
  2. ②C 언어의 int 타입은 컴퓨터 종류에 상관없이 4바이트의 고정된 크기를 가진다.
  3. ③Java 언어의 논리 타입은 수치 타입으로 변환할 수 없다.
  4. ④float 타입과 double 타입은 C 언어와 Java 언어의 실수 타입이다.
정답 보기

정답 ② · 해설 보기

3.
다음 Java 프로그램의 실행 결과로 옳은 것은?
class Super {
	Super() {
		System.out.print("A");
	}
}

public class Sub extends Super {
	Sub() {
		System.out.print("B");
	}
	static {
		System.out.print("C");
	}
	public static void main(String[] args) {
		System.out.print("D");
		new Sub();
	}
}
프로그래밍언어론
  1. ①CDAB
  2. ②CDBA
  3. ③DABC
  4. ④DCBA
정답 보기

정답 ① · 해설 보기

4.
Java 언어의 참조형(reference type) 변수에 대한 설명으로 옳지 않은 것은?
프로그래밍언어론
  1. ①참조형 변수는 객체의 주소가 아니라 객체 자체를 저장한다.
  2. ②참조형 변수의 종류에는 클래스형, 인터페이스형, 배열형 등이 있다.
  3. ③참조형 변수가 null값을 갖는 것은 아무것도 참조하지 않음을 의미하는 것이다.
  4. ④참조형 변수는 객체가 가지고 있는 데이터에 접근하거나 객체의 메소드를 호출하기 위해 사용된다.
정답 보기

정답 ① · 해설 보기

5.
다음 C 프로그램의 실행 결과로 옳은 것은?
#include <stdio.h>

void main() {
	int i, j, s = 0;
 
	for (i = 1; i < 10; i++) {
		for (j = 1; j < 10; j++) {
			if (j%2 == 0) continue;
			if (i%3 == 0) continue;
			if (i%4 == 0) break;
			s++;
		}
	}
	printf("%d\n", s);
}
프로그래밍언어론
  1. ①10
  2. ②20
  3. ③45
  4. ④90
정답 보기

정답 ② · 해설 보기

6.
다음 C 프로그램의 실행 결과로 옳은 것은?
#include <stdio.h>

int f(int a) {
	return (a + 1.5);
}
 
void main() {
	float x = 3.5;
	int y = 2;
	float z = 1.0;

	z += x + y * 12.5 + f(x);
	printf("%.1f\n", z);
}
프로그래밍언어론
  1. ①33.0
  2. ②33.5
  3. ③34.0
  4. ④34.5
정답 보기

정답 ② · 해설 보기

7.
병행프로그램에서 사용되는 모니터(monitor)에 대한 설명으로 옳지 않은 것은?
프로그래밍언어론
  1. ①모니터는 프로그래밍 언어수준에서 제공되는 구성체로 세마포어(semaphore)와 유사한 기능을 제공한다.
  2. ②모니터는 동기화를 위해 조건변수(condition variable)를 제공한다.
  3. ③모니터는 지역변수와 프로시저, 그리고 초기화 코드로 구성되어 있다.
  4. ④모니터 내에서는 여러 개의 프로세스들이 동시에 활성화될 수 있다.
정답 보기

정답 ④ · 해설 보기

8.
다음 C 프로그램의 실행 결과로 옳은 것은?
#include <stdio.h>

int f(int x, int y) {
    int z;
    z = ++x + y--;
    printf("%d ", z);
    return x+y;
}

void main() {
    int x = 3, y = 4, z;
    z = f(x, y);
    {
	 int x = 5;
	 printf("%d ", z);
	 z = f(x, y);
    }
    printf("%d ", z);
}
프로그래밍언어론
  1. ①7 7 9 9
  2. ②8 7 10 7
  3. ③8 7 10 9
  4. ④8 8 10 10
정답 보기

정답 ③ · 해설 보기

9.
다음 C 프로그램을 실행한 후 출력 결과 값이 다른 것은?
#include <stdio.h>

void main() {
    int x[4][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
    int (*p)[3];
    int *pp[3];

    p = &x[1];
    pp[0] = x[2];
    printf("%d %d %d %d\n", (*p)[0], p[1][0], *pp[0], **(p+1));
}
프로그래밍언어론
  1. ①(*p)[0]
  2. ②p[1][0]
  3. ③*pp[0]
  4. ④**(p+1)
정답 보기

정답 ① · 해설 보기

10.
다음 C++ 프로그램의 실행 결과가 아래와 같이 나오기 위해 ㉠에서 구현해야 하는 생성자 코드로 옳은 것은?
#include <iostream>
#include <string.h>
using std::cout;
using std::endl;

class A {
      char *str;
public:
       A() { str = NULL; }
	㉠
       A(char *ss) {
            str = new char[strlen(ss)+1];
            strcpy(str, ss);
       }

       void set(char *cc) { strcpy(str, cc); }
       void show() { cout << str << endl; }
};

void main() {
       A a("AAAA");
       A b = a;
       a.set("BBBB");
       a.show();
       b.show();
}
 
<실행 결과>
 
   
BBBB
AAAA
프로그래밍언어론
  1. ①
    A(A a) {
    str = new char[strlen(a.str)+1];
    strcpy(str, a.str);
    }
  2. ②
    A(A *a) {
    str = new char[strlen(a->str)+1];
    strcpy(str, a->str);
    }
  3. ③
    A(A &a) {
    str = new char[strlen(a.str)+1];
    strcpy(str, a.str);
    }
  4. ④
    A(char *a) {
    str = new char[strlen(a)+1];
    strcpy(str, a);
    }
정답 보기

정답 ③ · 해설 보기

11.
C++ 언어의 클래스에 대한 설명으로 옳지 않은 것은?
프로그래밍언어론
  1. ①클래스의 인스턴스(instance)를 객체라 한다.
  2. ②소멸자(destructor)는 객체가 소멸될 때에 자동 호출된다.
  3. ③클래스 내부의 멤버 변수를 static으로 선언할 수 없다.
  4. ④부모 클래스의 멤버 함수를 자식 클래스에서 재정의하는 것을 오버라이딩(overriding)이라 한다.
정답 보기

정답 ③ · 해설 보기

12.
정규식(regular expression) a(da|ad|a)*로 표현할 수 없는 것은?
프로그래밍언어론
  1. ①adaaddaa
  2. ②adadaaaadada
  3. ③adadaaddaaa
  4. ④adaddada
정답 보기

정답 ④ · 해설 보기

13.
다음 Java 프로그램이 오류 또는 예외(exception) 없이 실행되기 위해 ㉠에 들어갈 수 있는 코드를 <보기>에서 모두 고른 것은?
class Parent { }
class Child extends Parent { }

public class Test {
	public static void main(String[] args) {	  ㉠
	}
}
 
<보기>
 
   
ⓐ
Parent p = new Parent();
Child c;
c = p;
ⓑ
Parent p = new Parent();
Child c;
c = (Child) p;
ⓒ
Parent p = new Child();
Child c;
c = (Child) p;
ⓓ
Parent p;
Child c = new Child();
p = c;
프로그래밍언어론
  1. ①ⓐ, ⓒ
  2. ②ⓐ, ⓓ
  3. ③ⓑ, ⓒ
  4. ④ⓒ, ⓓ
정답 보기

정답 ④ · 해설 보기

14.
다음 문법으로 유도(derivation)될 수 없는 것은?
<program> → begin <stmt_list> end
<stmt_list> → <stmt> | <stmt>; <stmt_list>
<stmt> → <var>=<expression>
<var> → A | B | C | D
<expression> → <var>+<var> | <var>-<var> | <var>
프로그래밍언어론
  1. ①begin A=B+C end
  2. ②begin A=B+C; B=C+D end
  3. ③begin A=B+C+D end
  4. ④begin A=B+C; C=D end
정답 보기

정답 ③ · 해설 보기

15.
다음 C++ 프로그램의 실행 결과로 옳은 것은?
#include <iostream>
using std::cout;
using std::endl;

void swap1(int *a, int *b) {
	int temp = *a; *a = *b; *b = temp;
}

void swap2(int &a, int &b) {
	int temp = a; a = b; b = temp;
}

void main() {
	int c = 10, d = 30;
	
	swap1(&c, &d);
	cout << c << " " << d << endl;
	
	swap2(c, d);
	cout << c << " " << d << endl;
}
프로그래밍언어론
  1. ①10 30
  2. ②
    10 30
    10 30 30 10
  3. ③30 10
  4. ④
    30 10
    10 30 30 10
정답 보기

정답 ③ · 해설 보기

16.
다음 Java 프로그램에서 컴파일 오류가 발생하는 부분을 모두 고른 것은?
import java.util.*;

public class GenericSuperTest {
	public static void main(String args[]) {
		Vector<String>  names;
		Vector<Integer> scores;
		Vector<Object>  obj;
		Vector<?>       wild;
		
		names = new Vector<String>();
		scores = new Vector<Integer>();
		
		scores = names;			// ㉠
		obj = (Vector<Object>) names;	// ㉡
		wild = names;			// ㉢
		names = (Vector<String>) wild;	// ㉣
		scores = (Vector<String>) wild;	// ㉤
	}
}
프로그래밍언어론
  1. ①㉠, ㉡
  2. ②㉠, ㉡, ㉢
  3. ③㉠, ㉡, ㉤
  4. ④㉢, ㉣, ㉤
정답 보기

정답 ③ · 해설 보기

17.
다음 C 프로그램에서 각 변수의 기억장소 할당에 대한 설명으로 옳은 것은?
void f() {
 	static int n = 0;
 	int i = 10, *p, *q;
 	p = (int *) malloc(sizeof(int));
 	q = &i;
}
프로그래밍언어론
  1. ①변수 n은 스택(stack) 영역에 할당된다.
  2. ②변수 p는 스택(stack) 영역에 할당된다.
  3. ③변수 q는 힙(heap) 영역에 할당된다.
  4. ④변수 i는 힙(heap) 영역에 할당된다.
정답 보기

정답 ② · 해설 보기

18.
다음 C++ 프로그램의 실행 결과로 옳은 것은?
#include <iostream>
using std::cout;

class A {
public:
	virtual void p() { cout << "A.p "; }
	void q() { cout << "A.q "; }
	virtual void r() { 
		p(); 
		q(); 
	}
};
 
class B : public A {
public:
	void p() { cout << "B.p "; }
};
 
class C : public B {
public:
	void q() { cout << "C.q "; }
	void r() { 
		q(); 
		p();
	}
};
 
void main() {
	A *ap = new B;
	ap->r();
	ap = new C;
	ap->r();
}
프로그래밍언어론
  1. ①A.p A.q B.p C.q
  2. ②A.p A.q C.q B.p
  3. ③B.p A.q B.p C.q
  4. ④B.p A.q C.q B.p
정답 보기

정답 ④ · 해설 보기

19.
다음 Java 프로그램의 실행결과로 옳은 것은?
class A extends RuntimeException { };
class B extends A { };

class Test {
	public static void main(String[] args) {
		try {
			try {
				throw new B();
			} catch (A x) {
				System.out.print("1 ");
				throw x;
			} finally {
				System.out.print("2 ");
			}
		} catch (B x) {
			System.out.print("3 ");
		}
	}
}
프로그래밍언어론
  1. ①1 2
  2. ②1 2 3
  3. ③2 3
  4. ④3
정답 보기

정답 ② · 해설 보기

20.
다음 C 프로그램의 실행 결과로 옳은 것은?
#include <stdio.h>

unsigned int getbits(unsigned x, int p, int n) {
	return (x >> (p - n)) & ~(~0 << n);
} 

void main() {
	unsigned int x = 312, res;

	res = getbits(x, 8, 4);
	printf("%d\n", res);
}
프로그래밍언어론
  1. ①1
  2. ②3
  3. ③7
  4. ④16
정답 보기

정답 ② · 해설 보기