본문 바로가기

정보처리기사 Daily 문제

정보처리기사 실기 Daily 문제 16

출처 : [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 이다.