정해진 특정한 기능을 수행하는 모듈을 의미하며 함수를 적절히 활용하면 하나의 문제를 잘게 분해할 수 있다. 예를들어 이진 탐색 트리는 삽입, 삭제, 순회 등 다양한 함수의 집합으로 구성된다. 만약 사용자 정의 함수가 없다면 오직 메인 함수에서 모든 알고리즘을 처리해야 하는데 이는 작업의 효율성을 저하시킬 수 있다. 또한 함수는 각각의 모듈로서 쉽게 수정되고 보완될 수 있다는 장점이 있다. (즉 매인함수의 크기를 줄여주고 특정한 함수를 분해해서 나중에 합친다. 매인함수가 짧고 다른함수가 많을수록 더욱 더 잘 짜여진 프로그램이라고 할 수 있다. 더 가독성이 좋은 프로그램이라고 할 수 있다.)
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
#include <stdio.h>
// 전역 변수란
int hour;
int minute;
int minuteAdd;
void counter()
{
minute += minuteAdd;
hour += minute / 60;
minute %= 60;
hour %= 24;
}
int main()
{
printf("시를 입력하세요 : ");
scanf("%d", &hour);
printf("분을 입력하세요 : ");
scanf("%d", &minute);
printf("더할 분을 입력하세요 : ");
scanf("%d", &minuteAdd);
counter();
return 0;
}
이렇게 하면 counter함수를 사용함으로써 엄청 식이 짧아진걸 볼 수 있다.
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
#include <stdio.h>
// 특정한 금액을 받아서 가장 적은 거스름 화폐의 개수를 구하는 함수이다.
int smallest(int number)
{
int count = 0;
while (number >= 50000)
{
number -= 50000; //50000원을 줄어들게 하면
count++; //50000원권을 사용한 것이므로 개수는 1개가 증가한다.
}
while (number >= 10000)
{
number -= 10000;
count++;
}
while (number >= 5000)
{
number -= 5000;
count++;
}
while (number >= 1000)
{
number -= 1000;
count++;
}
while (number >= 500)
{
number -= 500;
count++;
}
while (number >= 100)
{
number -= 100;
count++;
}
while (number >= 50)
{
number -= 50;
count++;
}
while (number >= 10)
{
number -= 10;
count++;
}
return count;
}
int main()
{
int number;
printf("금액을 입력하세요 : ");
scanf("%d", &number);
printf("최소로 뺄 수 있는 화폐의 개수는 %d개 입니다. \n", smallest(number));
//%d애 smallest(number)을 넣을 수 있는 이유는 smallest함수의 return 값이 int형이기 떄문이다.
return 0;
}
'C > 기초' 카테고리의 다른 글
조합이란 (0) | 2019.07.25 |
---|---|
반복 함수와 재귀함수 (0) | 2019.07.25 |
기본 입출력 추가 설명 (0) | 2019.07.25 |
기본 입출력 (0) | 2019.07.25 |
반복문 (0) | 2019.07.25 |