기출문제/정보처리기사

2022년 1회 정보처리기사 기출문제 76번

엉클지니 2025. 3. 10. 21:12

76. 다음 C언어 프로그램이 실행되었을 때, 실행 결과는?

E     V

 R      O

 

이 문제는 C언어 프로그램의 실행 결과를 묻는 문제입니다. 프로그램을 단계별로 분석하고, 변수들의 상태 변화를 추적하여 최종 결과를 도출할 수 있습니다.

주어진 코드 분석

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    char str1[20] = "KOREA";  // str1 = "KOREA"
    char str2[20] = "LOVE";   // str2 = "LOVE"
    char* p1 = NULL;
    char* p2 = NULL;
    
    p1 = str1;  // p1은 str1을 가리킴
    p2 = str2;  // p2는 str2를 가리킴
    
    str1[1] = p2[2];  // str1[1]을 str2[2]의 값으로 설정
    str2[3] = p1[4];  // str2[3]을 str1[4]의 값으로 설정
    
    strcat(str1, str2);  // str1에 str2를 이어붙임
    
    printf("%c", *(p1 + 2));  // p1 + 2 위치의 문자를 출력
    
    return 0;
}

1. 변수 초기화 및 포인터 설정

  • str1은 "KOREA"로 초기화됩니다. 즉, str1의 내용은 {'K', 'O', 'R', 'E', 'A', '\0'}입니다.
  • str2는 "LOVE"로 초기화됩니다. 즉, str2의 내용은 {'L', 'O', 'V', 'E', '\0'}입니다.
  • p1은 str1을 가리키도록 설정되고, p2는 str2를 가리키도록 설정됩니다.

2. str1[1] = p2[2];

  • p2[2]는 str2의 2번째 인덱스 값, 즉 'V'입니다.
  • 그래서 str1[1] = p2[2];는 str1[1]을 'V'로 변경합니다.
  • 변경 후 str1: {'K', 'V', 'R', 'E', 'A', '\0'}

3. str2[3] = p1[4];

  • p1[4]는 str1의 4번째 인덱스 값, 즉 'A'입니다.
  • 그래서 str2[3] = p1[4];는 str2[3]을 'A'로 변경합니다.
  • 변경 후 str2: {'L', 'O', 'V', 'A', '\0'}

4. strcat(str1, str2);

  • strcat 함수는 str1 뒤에 str2를 이어붙입니다. 즉, str1에 str2의 내용을 추가합니다.
  • 변경 후 str1: {"K", "V", "R", "E", "A", "L", "O", "V", "A", '\0'}

5. printf("%c", *(p1 + 2));

  • p1은 str1을 가리키고 있습니다.
  • p1 + 2는 str1의 2번째 인덱스를 가리킵니다. 즉, *(p1 + 2)는 str1[2]와 같습니다.
  • str1[2]의 값은 'R'입니다.

따라서 printf("%c", *(p1 + 2));는 'R'을 출력합니다.

결론

최종적으로 출력되는 문자는 'R'입니다.
따라서 정답은 ❸ R입니다.

반응형