본문 바로가기
📍Certificate/Engineer Information Processing

[정보처리기사] 실기 프로그래밍언어 3문제 (27)

by Sun A 2024. 10. 12.

1️⃣ [C언어]

2024.2회

다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.

#include 

void func(char *d, char *s) {
	int sum = 0;
	while (*s) {
		*d = *s;
		d++;
		s++;
	}
	*d = '\0';
}

int main() {
	char* str1 = "first";
	char str2[50] = "teststring";
	int result = 0;
	func(str2, str1);

	for (int i = 0; str2[i] != '\0'; i++) {
		result += i;
	}
	printf("%d", result);
	return 0;
}
10

func 함수는 s가 가리키는 문자열을 d로 복사하는 함수이다.

main을 보면 func의 d에는 str2, s에는 str1이 들어간다.

while 문으로 s의 문자열 개수만큼 반복하여 d에 복사된다. 

결론적으로 func 함수가 적용되고 난 이후의 str2는 "first"가 된다.

for문을 보면 str2가 '\0' 값이 되면 반복을 멈추는데, str2는 

0 1 2 3 4
f i r s t

로 되어있다. 그렇기 때문에 result에 들어가는 값은  0 + 1 + 2 + 3 + 4 = 10 이다.

  

2️⃣ [Python]

2020.4회

다음은 파이썬 소스 코드이다. 출력 결과를 쓰시오.

lol = [[1,2,3],[4,5],[6,7,8,9]]
print(lol[0])
print(lol[2][1])
for sub in lol:
    for item in sub:
        print(item, end = '')
    print()
[1, 2, 3]
7
123
45
6789

print(lol[0]) => [1, 2, 3]

print(lol[2][1]) => 7

for sub in lol : 의 반복문을 통해 lol의 리스트를 반복한다.

for item in sub : 의 반복문을 통해 sub 리스트의 각 요소를 반복한다.

각 요소 item이 모두 출력되면 (end = '' 이기 때문에 띄어쓰기 X)

item이 다 출력된 이후 다시 sub 반복문 시작

 

3️⃣ [JAVA]

2023.1회

다음 Java 코드에 대한 출력 값을 작성하시오.

class Parent {
    int x = 100;
    Parent() {
        this(500);
    }
 
    Parent(int x) {
        this.x = x;
    }
 
    int getX() {
        return x;
    }
}
 
class Child extends Parent {
    int x = 4000;
    Child() {
        this(5000);
    }
 
    Child(int x) {
        this.x = x;
    }
}
 
public class Main {
    public static void main(String[] args) {
        Child obj = new Child();
        System.out.println(obj.getX());
    }
}
500

Child에는 getX() 메소드를 오버라이드 하지 않으므로 Parent의 getX() 메소드를 호출한다.

여기서 Parent 클래스는 멤버 변수 x는 100을 가집니다.

그 다음 Parent() 기본 생성자에서 this(500); 을 호출하여, 두 번째 생성자 (Parent(int x))를 호출한다.

이로 인해 x 값이 500으로 설정된다.

Parent 클래스의 getX() 메소드를 호출하는 것이기 때문에 return 값은 500이 된다.