본문 바로가기
카테고리 없음

2023 정보처리기사 실기 3회 프로그래밍 문제 해설(10번, 8번, 5번)

by picker_life 2024. 3. 3.
반응형

2023 정보처리기사 실기 3회 5번

문제

C언어에서 구조체의 멤버에 접근하기 위해 괄호안의 기호를 작성하시오.

 

#include <stdio.h>
#include <stdlib.h>
 
typedef struct Data{
    char c;
    int *numPtr; 
} Data;
 
int main(){
    int num = 10;
    Data d1;    
    Data *d2 = malloc(sizeof(struct Data));
    
    d1.numPtr = &num;  
   d2 ( ) numPtr = &num; 
 
    printf("%d\n", *d1.numPtr); 
    printf("%d\n", *d2 ( ) numPtr);
 
    free(d2); 
    return 0;
}

 

정답

해설

C언어에서 구조체 포인터를 통해 구조체의 멤버에 접근할 때는 화살표 연산자(->)를 사용해야 합니다. 따라서, '괄호' 자리에는 '->' 연산자가 들어가야 합니다.

 

 

2023 정보처리기사 실기 3회 8번

 

문제

8. 다음 C언어 코드에 알맞는 출력값을 작성하시오. 

#include <stdio.h>
 
int f(int n) {
    if(n<=1) return 1;
    else return n*f(n-1);
}
 
int main() {
    printf("%d", f(7));
}

 

정답

5040

 

해설

C 코드는 재귀 함수를 사용하여 팩토리얼 값을 계산하고 있다. 주어진 함수 f는 정수 n을 매개변수로 받아, n이 1 이하일 경우 1을 반환하고, 그렇지 않을 경우 n * f(n-1)을 반환한다. 이는 팩토리얼을 계산하는 전형적인 방식이며 f(7)을 호출하면 다음과 같은 연산을 수행한다.

(7) = 7 * f(6)
     = 7 * 6 * f(5)
     = 7 * 6 * 5 * f(4)
     = 7 * 6 * 5 * 4 * f(3)
     = 7 * 6 * 5 * 4 * 3 * f(2)
     = 7 * 6 * 5 * 4 * 3 * 2 * f(1)
     = 7 * 6 * 5 * 4 * 3 * 2 * 1
     = 5040

 

 

2023 정보처리기사 실기 3회 10번

 

문제

C언어의 포인터의 알맞는 출력값 작성

#include <stdio.h>
 
int main() {
    char* p = "KOREA";
    printf("%s ", p);
    printf("%s ", p+1);
    printf("%c ", *p);
    printf("%c ", *(p+3));
    printf("%c ", *p+4);
}

 

정답

KOREA

OREA

K

E

O

 

해설

이 C 코드는 문자열 포인터와 포인터 연산에 관한 것이다. 여기서 p는 "KOREA"라는 문자열을 가리키는 포인터다. 코드의 printf 함수들은 다양한 방식으로 이 문자열과 그 요소들을 출력한다. 아래는 각 printf 호출이 출력하는 내용이다.

  1. printf("%s ", p); - 이는 포인터 p가 가리키는 문자열 전체, 즉 "KOREA"를 출력
  2. printf("%s ", p+1); - p+1은 문자열의 두 번째 문자를 가리키므로, "OREA"를 출력 (첫 번째 문자 'K'를 건너뛰고 출력한다.)
  3. printf("%c ", *p); - *p는 포인터 p가 가리키는 첫 번째 문자, 즉 'K'를 출력
  4. printf("%c ", *(p+3)); - *(p+3)는 문자열의 네 번째 문자를 가리키므로, 'E'를 출력
  5. printf("%c ", *p+4); - *p+4는 포인터 p가 가리키는 첫 번째 문자 'K'의 ASCII 값에 4를 더한 것이다. 'K'의 ASCII 값은 75이므로, 이는 75 + 4 = 79와 같고, ASCII에서 79는 'O'이다.