프로그래밍언어론-인정답(2021-04-11 / 172.9KB / 135회)
프로그래밍언어론 인 책형 1 쪽 프로그래밍언어론 문 1. 다음 C 프로그램의 실행 결과로 옳은 것은? #include void main() { printf("%d\n", 8 >> 2 ? 2 | 1 : 2 & 1); } ① 0 ② 1 ③ 2 ④ 3 문 2. C 언어와 Java 언어의 데이터 타입에 대한 설명으로 옳지 않은 것은? ① C 언어는 문자 타입을 ASCII 코드값으로 표현하고, Java 언어는 문자 타입을 Unicode 코드값으로 표현한다. ② C 언어의 int 타입은 컴퓨터 종류에 상관없이 4바이트의 고정된 크기를 가진다. ③ Java 언어의 논리 타입은 수치 타입으로 변환할 수 없다. ④ 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(); } } ① CDAB ② CDBA ③ DABC ④ DCBA 문 4. Java 언어의 참조형(reference type) 변수에 대한 설명으로 옳지 않은 것은? ① 참조형 변수는 객체의 주소가 아니라 객체 자체를 저장한다. ② 참조형 변수의 종류에는 클래스형, 인터페이스형, 배열형 등이 있다. ③ 참조형 변수가 null값을 갖는 것은 아무것도 참조하지 않음을 의미하는 것이다. ④ 참조형 변수는 객체가 가지고 있는 데이터에 접근하거나 객체의 메소드를 호출하기 위해 사용된다. 문 5. 다음 C 프로그램의 실행 결과로 옳은 것은? #include 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); } ① 10 ② 20 ③ 45 ④ 90 문 6. 다음 C 프로그램의 실행 결과로 옳은 것은? #include 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); } ① 33.0 ② 33.5 ③ 34.0 ④ 34.5 프로그래밍언어론 인 책형 2 쪽 문 7. 병행프로그램에서 사용되는 모니터(monitor)에 대한 설명으로 옳지 않은 것은? ① 모니터는 프로그래밍 언어수준에서 제공되는 구성체로 세마 포어(semaphore)와 유사한 기능을 제공한다. ② 모니터는 동기화를 위해 조건변수(condition variable)를 제공한다. ③ 모니터는 지역변수와 프로시저, 그리고 초기화 코드로 구성되어 있다. ④ 모니터 내에서는 여러 개의 프로세스들이 동시에 활성화될 수 있다. 문 8. 다음 C 프로그램의 실행 결과로 옳은 것은? #include 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); } ① 7 7 9 9 ② 8 7 10 7 ③ 8 7 10 9 ④ 8 8 10 10 문 9. 다음 C 프로그램을 실행한 후 출력 결과 값이 다른 것은? #include 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)); } ① (*p)[0] ② p[1][0] ③ *pp[0] ④ **(p+1) 문 10. 다음 C++ 프로그램의 실행 결과가 아래와 같이 나오기 위해 ㉠에서 구현해야 하는 생성자 코드로 옳은 것은? #include #include 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 BBBB AAAA ① A(A a) { str = new char[strlen(a.str)+1]; strcpy(str, a.str); } ② A(A *a) { str = new char[strlen(a->str)+1]; strcpy(str, a->str); } ③ A(A &a) { str = new char[strlen(a.str)+1]; strcpy(str, a.str); } ④ A(char *a) { str = new char[strlen(a)+1]; strcpy(str, a); } 프로그래밍언어론 인 책형 3 쪽 문 11. C++ 언어의 클래스에 대한 설명으로 옳지 않은 것은? ① 클래스의 인스턴스(instance)를 객체라 한다. ② 소멸자(destructor)는 객체가 소멸될 때에 자동 호출된다. ③ 클래스 내부의 멤버 변수를 static으로 선언할 수 없다. ④ 부모 클래스의 멤버 함수를 자식 클래스에서 재정의하는 것을 오버라이딩(overriding)이라 한다. 문 12. 정규식(regular expression) a(da|ad|a)*로 표현할 수 없는 것은? ① adaaddaa ② adadaaaadada ③ adadaaddaaa ④ 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; ① ⓐ, ⓒ ② ⓐ, ⓓ ③ ⓑ, ⓒ ④ ⓒ, ⓓ 문 14. 다음 문법으로 유도(derivation)될 수 없는 것은? → begin end → | ; → = → A | B | C | D → + | - | ① begin A=B+C end ② begin A=B+C; B=C+D end ③ begin A=B+C+D end ④ begin A=B+C; C=D end 문 15. 다음 C++ 프로그램의 실행 결과로 옳은 것은? #include 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 names; Vector scores; Vector