큰 수를 리턴하는 다음 두 개의 big 함수를 중복 구현하라
int big(int a, int b); // a와 b 중 큰 수 리턴
int big(int a[], int size); // 배열 a[]에서 가장 큰 수 리턴
실행 결과
3
9
이름이 같은 두 개의 함수, 각자 잘 구현하라는 듯
이 둘은 매개변수의 종류가 다르니까 함수 중복 가능하다.
#include <iostream>
using namespace std;
int big(int a, int b) {
if(a > b)
return a;
else
return b;
}
int big(int a[], int size) {
int p = a[0];
for(int i=1; i<size; i++) {
if(p < a[i]) { p = a[i]; }
}
return p;
}
int main() {
cout << big(2,3) << endl;
int array[] = {1, 9, -2, 8, 6};
cout << big(array, 5 << endl;
// big(array[], 5)<- 매개변수 넘겨줄 때 배열 형태 아니고 변수 이름만 넘기면 돼. 이렇게 하면 오류야.
}
함수 sum()을 호출하는 경우가 다음과 같을 때 sum()을 중복 구현하라.
sum(3, 5); // 3~5까지의 합을 구하여 리턴
sum(3); // 0~3까지의 합을 구하여 리턴
sum(100); // 0~100까지의 합을 구하여 리턴
실행결과
12
6
5050
#include <iostream>
using namespace std;
int sum(int a, int b) {
int s = 0;
for(int i=a; i<=b; i++) { s += i; }
return s;
}
int sum(int a) {
int s = 0;
for(int i=0; i<=a; i++) { s += i; }
return s;
}
int main() {
cout << sum(3, 5) << endl;
cout << sum(3) << endl;
cout << sum(100) << endl;
}
디폴트 매개 변수를 가진 함수의 원형 선언과 구현을 분리한 사례를 보여준다.
실행 결과
***** ********** 10 10 Hello
#include <iostream>
#include <string>
using namespace std;
void star(int a=5) {
for(int i=0; i<a; i++)
cout << '*';
cout << endl;
}
void msg(int b, string text="") {
cout << b << " " << text << endl;
}
int main() {
star();
star(10);
msg(10);
msg(10, "Hello");
}
함수 f()를 호출하는 경우가 다음과 같을 때, f()를 디폴트 매개 변수를 가진 함수로 작성하라.
f(); //한 줄에 빈칸을 10개 출력한다.
f('%'); //한 줄에 '%'를 10개 출력한다.
f('@', 5); //다섯 줄에 '@'를 10개 출력한다.
실행 결과
(빈칸 10개) %%%%%%%%%% @@@@@@@@@@ @@@@@@@@@@ @@@@@@@@@@ @@@@@@@@@@ @@@@@@@@@@
#include <iostream>
using namespace std;
void f(char c=' ', int line=1) { //char c=" "아니고 char c=' '임
for(int i=0; i<line; i++) {
for(int j=0; j<10; j++)
cout << c;
cout << endl;
}
}
int main() {
f();
f('%');
f('@', 5);
}