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
반응형
'코딩일기 > 자격증' 카테고리의 다른 글
[정보처리기사] [ Java ] 자바 객체지향 : 오버로딩, 오버라이딩 | 정보처리기사 실기 기출문제 (0) | 2024.11.21 |
---|---|
[정보처리기사] 스키마 (Schema) | 내부스키마, 개념스키마, 외부스키마 | 정보처리기사 기출문제 (0) | 2024.11.19 |
[정보처리기사] 프로그래밍 표기법 정리 | 카멜, 파스칼, 스네이크, 헝가리안 표기법 | 정보처리기사 실기 기출문제 (0) | 2024.11.13 |
[정보처리기사] 관계대수와 관계해석 | 디비전 연산(÷) 예제와 문제 풀이 | 정보처리기사 실기 기출문제 (0) | 2024.11.12 |
[정보처리기사] DDL(Data Definition Language, 데이터 정의어) | 정보처리사 실기 기출 (1) | 2024.11.09 |