[Prebuild] ITE1010 21' Midterm
한양대학교 정보시스템학과 2021학년도 2학기 C++프로그래밍 중간고사와 관련된 노트입니다.
1.
#include <iostream>
using namespace std;
int func(int a[], int k) {
static int m = 0;
a[k] = a[k] + k;
if(m == 0)
k = k + 1;
m = (m + 1) % 2;
return k;
}
int main(void) {
int a[] = {3, 3, 2, 2, 1};
int i = 0;
while(i < 5)
i = func(a,i);
int j = 0;
while(j < 5) {
cout << a[j] << ", ";
j++;
}
return 0;
}
1-1.
출력결과를 작성하시오.
정답
3, 5, 6, 8, 9,
해설
while
문 내부에서 func(a, 0)
를 제일 처음에 호출하면, func(a,k)
에서 k
가 0
이므로 a[0] = a[0] + 0
이므로 a[0]
은 3
이다. m
은 0
이므로 k
는 k+1
이 되어 값은 1
이 되고, m = (m + 1) % 2
로 m
값을 다시 계산하면 1
이다. 따라서 첫번째 호출에서는 1
을 반환하며 while
문의 순환자 i
를 1
로 변경한다.