출처 : [2021년 제1회 기사 실기 출제예상 문제] (6과목) 프로그램밍 언어 활용 - 6 : 네이버 카페 (naver.com)
C 프로그램의 출력결과를 쓰시오.
#include <stdio.h>
double power(double base, int exp);
int main()
{
printf("%.2f\n", power(2, 3));
return 0;
}
double power(double base, int exp)
{
double result = 1;
int n = exp;
while(n--) return *= base;
reeturn result;
}
정답 : 8.00
power 함수에서 double base = 2, int exp = 3으로 파라미터를 받았다.
고로 int n = 3이 되었다.
while(n--) {
return *= base;
}
는 n의 값이 0이 될 때 빠져나오고, 그렇지 않으면 base의 값을 return에 계속 곱하라는 것이다.
(C 언어는 while 문이 0이면 false 1 이상의 값은 true라고 합니다.)
while(n--) = 3일 때
while 문 안에서 int n = 2, return = 2, base = 2 가 된다. (return * base = 1 * 2)
while(n--) = 2일 때
while 문 안에서 int n = 1, return = 4, base = 2 가 된다. (return * base = 2 * 2)
while(n--) = 1일 때
while 문 안에서 int n = 0, return = 8, base = 2가 된다. (return * base = 4 * 2)
n이 0이 되었으므로 더이상 while을 실행하지 않고 나간다.
고로 return은 반환하는 power() 함수는 8이 되었고,
포맷스트링이 %.2f(소수점 2자리까지 float의 형태로 출력)이므로
정답은 8.00 이다.
'정보처리기사 Daily 문제' 카테고리의 다른 글
정보처리기사 실기 Daily 문제 18 (0) | 2021.06.01 |
---|---|
정보처리기사 실기 Daily 문제 17 (0) | 2021.05.31 |
정보처리기사 실기 Daily 문제 15 (0) | 2021.05.29 |
정보처리기사 실기 Daily 문제 14 (0) | 2021.05.28 |
정보처리기사 실기 Daily 문제 13 (0) | 2021.05.27 |