오늘은 이전 글인 사용자 정의 함수의 각 종류별로 간단하게 예제를 풀어볼 것이다. :-)
이전 글은 여기서 확인할 수 있다! https://cwithvisual.tistory.com/entry/%EC%82%AC%EC%9A%A9%EC%9E%90-%EC%A0%95%EC%9D%98-%ED%95%A8%EC%88%98
큰 값 출력 함수, 구구단 출력 함수, 양수 입력 받는 함수, 아스키코드 출력 함수
1. 입력도 있고 반환도 있는 함수
2. 입력은 있지만 반환은 없는 함수
3. 입력은 없고 반환은 있는 함수
4. 입력도 없고 반환도 없는 함수
< 1. 입력도 있고 반환도 있는 함수 >
[문제]
정수 두 개를 입력받아서 큰 값을 반환하는 max 함수를 만들어라.
단, main함수는 다음과 같다.
int main(void) {
int a, b;
scanf("%d %d", &a, &b);
printf("%d", max(a, b));
return 0;
}
[풀이]
다음 4가지를 생각해보자.
- 함수 이름은? max
- 반환하는 값의 자료형은? int
- 전달받는 값에 대한 정보는? int형, x, y
- 함수 내부는? 조건문을 이용하여, x>y일 경우 x반환, 아닐 경우 y반환
조건문(if 문) 참고) https://cwithvisual.tistory.com/entry/%EC%A1%B0%EA%B1%B4%EB%AC%B8-%EC%A0%95%EB%A6%AC-if-if-else-else-if-else
이것에 기반하여 함수를 작성해보면 다음과 같다.
int max(int x, int y) {
if (x > y) return x;
else return y;
}
코드를 정리하면 다음과 같다.
#include <stdio.h>
int max(int x, int y) {
if (x > y) return x;
else return y;
}
int main(void) {
int a, b;
scanf("%d %d", &a, &b);
printf("%d", max(a, b));
return 0;
}
< 2. 입력은 있지만 반환은 없는 함수 >
[문제]
구구단을 출력하는 print_gugudan 함수를 만들어라.
정수 하나를 입력받으며, 입력받은 정수에 해당하는 구구단을 출력한다. 즉, 반환 값이 없다.
단, main함수는 다음과 같다.
int main(void) {
int dan;
scanf("%d", &dan);
print_gugudan(dan);
return 0;
}
[풀이]
다음 4가지를 생각해보자.
- 함수 이름은? print_gugudan
- 반환하는 값의 자료형은? 없다. void
- 전달받는 값에 대한 정보는? int형 n
- 함수 내부는? 반복문(for문)을 사용하여 작성
참고) for문은 다음 글을 참고하면 된다.
이것에 기반하여 함수를 작성해보면 다음과 같다.
void print_gugudan(int n) {
for (int i = 1; i <= 9; i++) printf("%dX%d=%d\n", n, i, n * i);
}
코드를 정리하면 다음과 같다.
#include <stdio.h>
void print_gugudan(int n) {
for (int i = 1; i <= 9; i++) printf("%dX%d=%d\n", n, i, n * i);
}
int main(void) {
int dan;
scanf("%d", &dan);
print_gugudan(dan);
return 0;
}
< 3. 입력은 없고 반환은 있는 함수 >
[문제]
사용자로부터 양수를 하나 입력받는 get_positive_number를 만들어라.이 함수는 전달 받는 값은 없고 반환만 있는 경우이다.사용자에게 숫자를 입력 받는데, 만약 사용자가 음수를 입력하면 양수를 입력할 때까지 숫자를 입력받도록 한다. 사용자가 양수를 입력하면 그 값을 반환한다. 단, main 함수는 다음과 같다.
int main(void) {
printf("positive number: %d", get_positive_number());
return 0;
}
[풀이]
다음 4가지를 생각해보자.
- 함수 이름은? get_positive_number
- 반환하는 값의 자료형은? 양수이므로 int
- 전달받는 값에 대한 정보는?없다. void
- 함수 내부는? 양수를 입력 받을 때까지 반복해야 하므로 반복문(while문)을 사용하여 작성
참고) while문은 다음글을 참고하면 된다.
이것에 기반하여 함수를 작성해보면 다음과 같다.
int get_positive_number(void) {
int n = 0;
while (n <= 0) {
printf("positive number? ");
scanf("%d", &n);
}
return n;
}
정리하면 다음과 같다.
#include <stdio.h>
int get_positive_number(void) {
int n = 0;
while (n <= 0) {
printf("positive number? ");
scanf("%d", &n);
}
return n;
}
int main(void) {
printf("positive number: %d", get_positive_number());
return 0;
}
< 4. 입력도 없고 반환도 없는 함수 >
[문제]
아스키 코드를 출력하는 print_ascii 함수를 만들어라.
이 함수는 입력도 없고 반환도 없다. 대문자 A부터 대문자 Z까지, 소문자 a부터 소문자 z까지의 아스키코드를 출력하는 함수이다.
단, main함수는 다음과 같다.
int main(void) {
print_ascii();
return 0;
}
[풀이]
다음 4가지를 생각해보자.
- 함수 이름은? print_ascii
- 반환하는 값의 자료형은? 없다. void
- 전달받는 값에 대한 정보는? 없다.void
- 함수 내부는? A부터 Z까지, a부터 z까지 아스키코드를 출력하는 것이므로 반복문(for문)을 사용하여 작성한다.
참고) for문은 다음 글을 참고하면 된다.
이것에 기반하여 함수를 작성해보면 다음과 같다.
void print_ascii(void) {
char ch;
for (ch = 'A'; ch <= 'Z'; ch++)
printf("%c : %d\n", ch, ch);
printf("----------\n");
for (ch = 'a'; ch <= 'z'; ch++)
printf("%c : %d\n", ch, ch);
}
코드를 정리하면 다음과 같다.
#include <stdio.h>
void print_ascii(void) {
char ch;
for (ch = 'A'; ch <= 'Z'; ch++)
printf("%c : %d\n", ch, ch);
printf("----------\n");
for (ch = 'a'; ch <= 'z'; ch++)
printf("%c : %d\n", ch, ch);
}
int main(void) {
print_ascii();
return 0;
}
'C언어_VisualStudio_실습' 카테고리의 다른 글
369게임 박수치기; while문, if문 (0) | 2021.06.11 |
---|---|
주문한 카페 메뉴 총 금액 출력하기; while문, switch문 (0) | 2021.06.10 |
[C언어] 조건문 예제: 절대값 출력, 학점 프로그램 (0) | 2021.05.31 |
[C 언어] 표준함수 사용해보기 : 수학함수, 랜덤함수, 외부 프로그램 실행 (0) | 2021.05.25 |
달력 프로그램 만들기 완전정복! (0) | 2021.05.23 |