코딩일기/자격증

[정보처리기사] [ C ] 함수 호출과 반환값 | 2020년 3회 정보처리기사 기출문제

jhy_2023 2024. 11. 16. 16:48
728x90
반응형

2020년 3회 정보처리기사 기출문제

문제

다음 C언어 소스 코드를 실행했을 때 출력 결과를 구하시오.

#include <stdio.h>
int r1(){
    return 4;
}
int r10(){
    return (30 + r1());
}
int r100(){
    return (200 + r10());
}
int main(){
    printf("%d\n", r100());
    return 0;
}

정답

234


반응형

해설

1. 반환값

반환값(Return Value)은 함수가 작업을 수행한 후 호출한 곳으로 돌려주는 결과 값을 말합니다.
반환값은 함수의 리턴 타입(Return Type)에 따라 달라지며, 함수의 선언부에서 미리 지정합니다.
C 언어에서는 return 키워드를 사용하여 함수가 호출된 곳으로 값을 돌려줍니다.


2. 반환값의 특징

📌 리턴 타입에 맞춰야 함

// int 타입 함수: 정수를 반환
int add(int a, int b) {
    return a + b;
}
  • 함수의 선언부에 명시된 리턴 타입과 반환값의 데이터 타입이 일치해야 합니다.
  • 예: int 타입 함수는 정수 값을 반환해야 하며, void 함수는 반환값이 없습니다.

📌 반환값이 있으면 변수에 저장 가능

int result = add(5, 3);  // 반환값 8을 result에 저장
printf("Result: %d\n", result);  // 출력: Result: 8
  • 반환값은 변수에 저장하거나 다른 작업에 사용할 수 있습니다.

📌 반환값이 없는 함수 (void)

void printMessage() {
    printf("This function does not return anything.\n");
}

int main() {
    printMessage();  // 출력: This function does not return anything.
    return 0;
}
  • 반환값이 필요 없는 작업은 void 타입으로 선언합니다. void 함수는 값을 반환하지 않으며, 호출된 뒤 작업만 수행하고 종료됩니다.
  • 반환값이 없어도 내부에서  printf() 같은 출력 함수를 통해 화면에 메시지(출력값)를 표시할 수 있습니다.
  • void 함수는  파일 저장, 화면 출력, 데이터 초기화 등 결과(반환값)를 돌려줄 필요가 없는 작업에 사용됩니다.
    • 반환값과 출력값의 차이
      • 반환값 (Return Value): 함수가 return 키워드를 통해 호출한 곳으로 돌려주는 값입니다.
      • 출력값 (Output): 함수 내부에서 printf(), puts() 등의 출력 함수를 사용해 화면에 표시되는 값입니다. 반환값이 없어도 출력값은 콘솔에 표시될 수 있습니다.

📌 명시적으로 함수 종료 가능

void checkValue(int x) {
    if (x < 0) {
        printf("Negative value detected.\n");
        return;  // 함수 종료
    }
    printf("Positive value: %d\n", x);
}
  • return;을 사용해 void 함수 실행을 강제로 종료할 수 있습니다.
728x90

3. 기출 문제 해설

이 문제는 C 언어 함수 호출의 흐름을 이해하는 것이 핵심입니다.

  • 함수 호출 순서: main() → r100() → r10() → r1()
  • 계산 과정:
    • r1() = 4
    • r10() = 30 + 4 = 34
    • r100() = 200 + 34 = 234
  • 따라서 출력값은 234입니다.

1️⃣ r1() 함수

int r1(){
    return 4;
}
  • 이 함수는 항상 4를 반환합니다.

2️⃣ r10() 함수

int r10(){
    return (30 + r1());
}
  • r10() 함수는 30과 r1()의 반환값을 더한 결과를 반환합니다. 따라서, r10()의 반환값은 30 + 4 = 34입니다.

3️⃣ r100() 함수

int r100(){
    return (200 + r10());
}
  • r100() 함수는 200과 r10()의 반환값을 더한 결과를 반환합니다. 따라서, r100()의 반환값은 200 + 34 = 234입니다.

4️⃣ main() 함수

int main(){
    printf("%d\n", r100());
    return 0;
}
  • main() 함수에서 printf()로 r100()의 반환값을 출력합니다. 최종적으로 프로그램은 234를 출력합니다.

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형