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

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

by Sun A 2024. 10. 5.

1️⃣ [SQL]

2021.2회

다음은 Inner Join을 하기 위한 SQL이다. 빈칸에 들어갈 문구를 적으시오.

SELECT .... FROM 학생정보 a JOIN 학과정보 b (   A   ) a.학과 = b.(   B   )
(A) ON
(B) 학과

* JOIN 키워드 

- 조건식을 이용하는 경우 : ON

- 공통 칼럼을 이용하는 경우 : USING

 

2️⃣ [C언어]

2021.2

다음은 C언어에 관한 소스코드이다. 실행 결과값을 작성하시오.

int mp(int base, int exp);
int main(){
   int res;
   res = mp(2,10);
   printf("%d",res);
   return 0;
}

int mp(int base, int exp) {
   int res = 1;
   for(int i=0; i < exp; i++){
      res = res * base;
   }
   
   return res;
}
1024

for(int i =0, i < 10, i ++)

base 값이 2인데 for 반복문의 res = res*base 를 보면 exp 보다 작은 만큼 반복하여 2를 곱한다.

1 * 2

2 * 2

4 * 2 = 2 * 2 * 2

...

이 방식대로 하는 것은 2를 몇 개 곱하냐를 구하는 것이다. 총 10번 곱하는 것이기 때문에 2^10의 값을 구하면 된다.

1024

 

3️⃣ [C언어]

2024.2

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

#include 

struct node {
	int n1;
	struct node *n2;
};

int main() {
	struct node a = {10, 0};
	struct node b = {20, 0};
	struct node c = {30, 0};

	struct node *head = &a;
	a.n2 = &b;
	b.n2 = &c;

	printf("%d", head -> n2 -> n1);

        return 0;
}
20

쉽게 작성하면 head의 주소값이 a가 되는데 a의 n2에는 b의 주소값이 들어간다.

= {10, {20, 0}} (내가 알아보기 쉽게 적은 것)

그 다음 b의 n2에는 c의 주소값이 들어가기 때문에 최종적으로 아래와 같다

= {10, {20, {30, 0}}}

여기서 print해야하는 값은 head의 n2의 n1 값

head의 n2는 {20, {30, 0}}

여기서 n1은 20