쉽게 풀어쓴 C언어 Express 제8장 함수 C Express.

Slides:



Advertisements
Similar presentations
Python Ch.06 RaspberryPi Sejin Oh. Raspberry Pi Python  IDLE(Integrated Development Environment)  라즈베리 파이 배포본들은 일반적으로 파이썬과 파이썬 3 의 IDLE 파 이썬 개발 도구를.
Advertisements

6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
최윤정 Java 프로그래밍 클래스 상속 최윤정
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
제3장 게임기본모듈 Page 153 ~ 182.
반복문, 함수 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
#include <stdio.h> int main(void) { float radius; // 원의 반지름
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express.
C 프로그래밍.
누구나 즐기는 C언어 콘서트 제7장 함수.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
컴퓨터 프로그래밍 기초 [Final] 기말고사
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express Slide 1 (of 26)
개정판 누구나 즐기는 C언어 콘서트 제8장 함수 출처: pixabay.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
10장 함수.
C언어 콘서트 제6장 반복문.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
C언어 콘서트 제2장 기초 사항.
6장. printf와 scanf 함수에 대한 고찰
2007 1학기 11 프로젝트 기초 실습.
Tail-recursive Function, High-order Function
2019년 1월 16일 오후 6시 15분 제 6 장 함수
11장. 1차원 배열.
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express Slide 1 (of 27)
Method & library.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
어서와 C언어는 처음이지 제15장.
Chapter 10 함수 기본.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
연산자 (Operator).
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
자바 5.0 프로그래밍.
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
Chapter 08. 함수.
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
Fucntion 요약.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
제 6 장 함수(functions).
제 15 강 문자와 코드 shcho.pe.kr.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
7주차: Functions and Arrays
함수, 모듈.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
수업 내용 수업 목표 강의 내용 강의 계획서 교과서 및 참고도서 평가 방법 수강생의 학습 방법 제안 강의자료 사이트
6 객체.
함수 강의자료 및 기말도우미.
Presentation transcript:

쉽게 풀어쓴 C언어 Express 제8장 함수 C Express

규모가 큰 프로그램은 전체 문제를 보다 단순하고 이해하기 쉬운 함수로 나누어서 프로그램을 작성하여야 한다. 이번 장에서 학습할 내용 규모가 큰 프로그램은 전체 문제를 보다 단순하고 이해하기 쉬운 함수로 나누어서 프로그램을 작성하여야 한다. 함수의 개념, 역할 함수 작성 방법 반환값 인수 전달 함수를 사용하는 이유

함수 Function Y = 2x+5 Y = 3x2+6x-7 Y = log(3x)

함수 - 그래프

함수 Y = 2x+5 X y 1 2 * 1 + 5 = 7 2 2 * 2 + 5 = 9 3 2 * 3 + 5 = 11 …

함수 Y = 2x+5 Y = f(x) f(x) = 2x+5

함수 f(x) = 2x+5 INPUT 5 2x+5 OUTPUT 15

복잡한 함수 Y =2x2 + 5k - 3 Y =f(x, k) f(x, k) = 2x2 + 5k - 3

f(x, k) = 2x2 + 5k - 3 함수 INPUT (5, 3) 2*52 + 5*3 – 3 = 2*25 + 5*3 – 3 = 50 + 15 – 3 = 65 – 3 = 62 2x2 + 5k - 3 OUTPUT 62

함수 f(x, k) = 2x2 + 5k - 3 f(5, 3) 2x2 + 5k - 3 OUTPUT 62

함수 f(x, k) = 2x2 + 5k - 3 f(5, 3) 2x2 + 5k - 3 return 62

함수 f(x, k) = 2x2 + 5k - 3 f(5, 3) 2x2 + 5k - 3 return 62

함수 f(x, k) = 2x2 + 5k - 3 f(5, 3) result 2x2 + 5k - 3 return 62

f(x, k) = 2x2 + 5k - 3 함수 f(5, 3) result result = 2x2 + 5k - 3 return 62

f(x, k) = 2x2 + 5k - 3 함수 f(5, 3) result result = 2x2 + 5k - 3 return result

f(x, k) = 2x2 + 5k - 3 함수 f(5, 3) result result = 2x2 + 5k - 3 return result

함수 f(x) = x를 3번 출력하시오 f(hello world) print(“%s”, x)

함수 f(x, k) = x+k의 결과 출력 f(20, 50) x+k = 20 + 50 = 70 print(“70”);

f(x) = 2x + 5의 결과 출력 C언어 스타일 f(20) int result; result = 2*20+5; printf(“%d”,result);

f(x) = 2x + 5의 결과를 반환하라 C언어 스타일 f(20) int result; result = 2*20+5; return result;

f(x) = 2x + 5의 결과를 반환하라 반환 타입 int f(20) int result; result = 2*20+5; return result; 반환되는 타입???

반환 타입 f(x) = 2x + 5의 결과를 반환하라 int f(20) { int result; result = 2*20 + 5; return result; }

f(x) = 2x + 5의 결과를 반환하라 입력 값을 변수로 int x = 20; int f(int x) { int result; result = 2*x + 5; return result; } int f(20) { int result; result = 2*20 + 5; return result; }

f(x) = 2x + 5 program1(x) = 2x + 5 함수의 이름 꼭 f(x)라고 써야 할까? f 대신에 program1 이라고 하면 안될까?  가능하다! program1(x) = 2x + 5

함수의 이름 program1(x) = 2x + 5 int x = 20; int program1(int x) { int result; result = 2*x + 5; return result; }

식별자를 만드는 규칙 알파벳 문자와 숫자, 밑줄 문자 _로 구성 첫 번째 문자는 반드시 알파벳 또는 밑줄 문자 _ 대문자와 소문자를 구별 C 언어의 키워드와 똑같은 이름은 허용되지 않는다. (Q) 다음은 유효한 식별자인가? sum _count king3 n_pictures 2nd_try Dollor# double O X // 숫자로 시작 X // #기호 X // 키워드

함수의 이름 program1(x) = 2x + 5 my_function(x) = 2x + 5 p2p(x) = 2x + 5

1~n까지 출력하는 함수 함수의 이름?  sum_print 입력받아야 하는 수??  n sum_print(n)

1~n까지 출력하는 함수 sum_print(int n) { int i; for(i=0; i <n ; i++)  반복문 사용! 출혁하는 거니까…  printf(함수 사용); sum_print(int n) { int i; for(i=0; i <n ; i++) printf(“%d\n”, i); }

1~n까지 출력하는 함수 void sum_print(int n) { int i; for(i=0; i <n ; i++) return 이 없는데…. 그럼 반환형은?  void 사용 void sum_print(int n) { int i; for(i=0; i <n ; i++) printf(“%d\n”, i); }

1~n까지 출력하는 함수 int n; scanf(“%d”,&n); void sum_print(int n) { int i; for(i=0; i <n ; i++) printf(“%d\n”, i); }

함수는 어디에서 호출될까? void sum_print(int n) { int i; for(i=0; i <n ; i++) 우리가 만든 함수는 main 함수에서 호출된다. void sum_print(int n) { int i; for(i=0; i <n ; i++) printf(“%d\n”, i); } int main (void) { sum_print(5); return 0; }

완성된 프로그램 #include <stdio.h> void sum_print(int n) { int i; for(i = 0; i < n; i++) printf(“%d\n“, i); } int main(void) int n; scanf(“%d”, &n); sum_print(n); return 0;

X+k의 결과를 출력하는 프로그램 X = 5, k = 3 result = 5 + 3 = 8 X= 5 k= 3 #include <stdio.h> int sum1(int x, int k) { int result; result = x + k; return result; } int main(void) int x, k, result; scanf(“%d %d”, &x, &k); result = sum1(x, k); printf(“%d\n”, result); return 0; X = 5, k = 3 result = 5 + 3 = 8 X= 5 k= 3 sum1(5, 3) result는 8이니까 8이 출력

함수의 개념 함수(function): 특정한 작업을 수행하는 독립적인 부분 함수 호출(function call): 함수를 호출하여 사용하는 것 함수는 입력을 받으며 출력을 생성한다.

함수의 필요성 #include <stdio.h> int main(void) { int i; for(i = 0; i < 10; i++) printf("*"); ... return 0; } 10개의 *을 출력하는 코드 10개의 *을 출력하는 코드 10개의 *을 출력하는 코드

함수의 필요성 함수를 정의하였다. 함수는 한번 정의되면 여러 번 호출하여서 실행이 가능하다. #include <stdio.h> void print_star() { int i; for(i = 0; i < 10; i++) printf("*"); } int main(void) print_star(); ... return 0;

함수의 장점 함수를 사용하면 코드가 중복되는 것을 막을 수 있다. 한번 작성된 함수는 여러 번 재사용할 수 있다. 함수를 사용하면 전체 프로그램을 모듈로 나눌 수 있어서 개발 과정이 쉬워지고 보다 체계적이 되면서 유지보수도 쉬워진다.

함수들의 연결 프로그램은 여러 개의 함수들로 이루어진다. 함수 호출을 통하여 서로 서로 연결된다. 제일 먼저 호출되는 함수는 main()이다.

함수의 종류

함수의 정의 반환형(return type) 함수 헤더(function header) 함수 몸체(function body)

함수의 구조

반환형

매개 변수

함수 정의 예제 함수를 프로그램을 이루는 부품이라고 가정하자. 입력을 받아서 작업한 후에 결과를 생성한다.

함수 호출과 반환 함수 호출(function call): 함수를 사용하기 위하여 함수의 이름을 적어주는 것 함수안의 문장들이 순차적으로 실행된다. 문장의 실행이 끝나면 호출한 위치로 되돌아 간다. 결과값을 전달할 수 있다.

인수와 매개 변수 2 3 x y 인수(argument): 실인수, 실매개 변수라고도 한다. 매개 변수(parameter): 형식 인수, 형식 매개 변수라고도 한다. 매개 변수 int main(void) { ... sum = add(2, 3); } int add(int x, int y) { ... } 인수 2 3 x y

반환값 3 반환값(return value): 호출된 함수가 호출한 곳으로 작업의 결과값을 전달하는 것 인수는 여러 개가 가능하나 반환값은 하나만 가능 3 return 0; return(0); return x; return x*x+2*x+1;

반환값 // 정수의 제곱을 계산하는 함수 예제 #include <stdio.h> int square(int n) { return(n * n); } int main(void) int result; result = square(5); printf("%d ", result); 25 result 25 5 n

반환값 2 3 x y 두개의 정수를 입력하시오: 2 3 두 수 중에서 큰 수는 3입니다. / 두수 중에서 큰 수를 찾는 함수 예제 #include <stdio.h> int get_max(int x, int y); int main(void) { int a, b; printf("두개의 정수를 입력하시오: "); scanf("%d %d", &a, &b); printf("두수 중에서 큰 수는 %d입니다.", get_max( a , b )); return 0; } int get_max(int x, int y) if( x > y ) return(x); else return(y); 2 3 x y

함수 원형 함수 원형(function prototyping): 컴파일러에게 함수에 대하여 미리 알리는 것 int compute_sum(int n); int main(void) { int sum; sum = compute_sum(100); printf(“sum=%d \n”, sum); } int compute_sum(int n) int i; int result = 0; for(i = 1; i <= n; i++) result += i; return result; compute_sum()은 함수 이름이랬지… 컴파일러

함수 원형의 형식 함수 원형(function prototype) : 미리 컴파일러에게 함수에 대한 정보를 알리는 것 (예) int get_integer(void); int combination(int n, int r); int combination(int, int); 반환형 함수이름(매개변수1, 매개변수2, ... ); 자료형만 적어주어도 됨!

함수 원형을 사용하지 않는 예제 함수 정의가 함수 호출보다 먼저 오면 함수 원형을 정의하지 않아도 된다. int compute_sum(int n) { int i; int result = 0; for(i = 1; i <= n; i++) result += i; return result; } int main(void) int sum; sum = compute_sum(100); printf(“sum=%d \n”, sum); 함수 정의가 함수 호출보다 먼저 오면 함수 원형을 정의하지 않아도 된다. 그러나 일반적인 방법은 아니다.

함수 정리 반환형 함수 이름 매개변수 1 반환형 없음 매개변수 없음 예 Void Function ( ) 2 반환형 없음 매개변수 있음 예 Void Function (int n, double f ) 3 반환형 있음 매개변수 없음 예 int Function ( ) 4 반환형 있음 매개변수 있음 예 int Function (int n, double f )

반환값: int / 함수 이름: square / 매개 변수: int n 예제 #1 정수의 제곱값을 계산하는 함수 반환값: int / 함수 이름: square / 매개 변수: int n int square( int n ) {   return(n*n); }

반환값: int / 함수 이름: get_max / 매개 변수: int x, int y 예제 #2 두개의 정수중에서 큰 수를 계산하는 함수 반환값: int / 함수 이름: get_max / 매개 변수: int x, int y int get_max(int x, int y) {   if( x > y ) return(x);   else return(y); }

반환값: void / 함수 이름: draw_rect / 매개 변수: int side 예제 #3 별표 기호를 이용하여 정사각형을 그리는 함수 반환값: void / 함수 이름: draw_rect / 매개 변수: int side void draw_rect(int side) {         int x, y;        for(y = 0; y < side; y++)         {                 for(x = 0; x < side; x++)                         printf("*");                 printf("\n");         }         return; }

반환값: int / 함수 이름: power / 매개 변수: int x, int y 예제 #4 정수의 거듭 제곱값(xy)을 계산하는 함수 반환값: int / 함수 이름: power / 매개 변수: int x, int y int power(int x, int y) {         int i;         long result = 1;    for(i = 0; i < y; i++)                 result *= x;                   return result; }

반환값: int / 함수 이름: factorial / 매개 변수: int n 예제 #5 팩토리얼값(n!)을 계산하는 함수 반환값: int / 함수 이름: factorial / 매개 변수: int n int factorial(int n) {      int i;      long result = 1; for(i = 1; i <= n; i++)            result *= i;       // result = result * x      return result; }

예제 #1 완성 // 정수의 제곱값을 계산하는 함수 #include <stdio.h> int square( int n ); int main(void) { int n; printf(“값을 입력 하세요:”); scanf(“%d”, &n); printf(“%d의 제곱은 %d입니다. “, n, square(n)); return 0; } // 사용자로부터 값을 입력받아서 반환 int square( int n ) return(n*n); 값을 입력 하세요: 7 7의 제곱은 49입니다.

예제 6 // 거듭 제곱 값을 구하는 예제 #include <stdio.h> int get_integer(void); int power(int x, int y); int main(void) { int a, b; a = get_integer(); b = get_integer(); printf("%d의 %d승은 %d입니다. ", a, b, power(a, b)); return 0; } // 사용자로부터 값을 입력받아서 반환 int get_integer(void) int n; printf("정수를 입력하시오: "); scanf("%d", &n); return n;

예제 6 - 계속 정수를 입력하시오: 2 정수를 입력하시오: 3 2의 3승은 8입니다. // 거듭 제곱 값을 계산하여서 반환 int power(int x, int y) { int i; long result = 1; // 1로 초기화 for(i = 0; i < y; i++) result *= x; // result = result * x return result; }

실습: 소수 찾기 주어진 숫자가 소수(prime)인지를 결정하는 프로그램이다. 양의 정수 n이 소수가 되려면 1과 자기 자신만을 약수로 가져야 한다. 암호학에서 많이 사용

실행결과 정수를 입력하시오: 23 23은 소수입니다.

알고리즘 사용자로부터 정수를 입력받아서 변수 n에 저장한다. 약수의 개수를 0으로 초기화한다. for( i=1; i<=n ; i++ ) n을 i로 나누어서 나머지가 0인지 본다. 나머지가 0이면 약수의 개수를 증가한다. 약수의 개수가 2이면 정수 n은 소수이다.

소스 #include <stdio.h> int is_prime(int); int get_integer(void); main() { int n, result; n = get_integer(); result = is_prime(n); if ( result == 1 ) printf("%d은 소수입니다.\n", n); else printf("%d은 소수가 아닙니다.\n", n); return 0; }

소스 - 계속 int get_integer(void) { int n; printf("정수를 입력하시오: "); scanf("%d", &n); return n; } int is_prime(int n) { int divisors = 0, i; for ( i = 1 ; i <= n ; i++ ) { if ( n%i == 0 ) divisors++; return (divisors == 2); 정수를 입력하시오: 23 23은 소수입니다.

라이브러리 함수 라이브러리 함수(library function): 컴파일러에서 제공하는 함수 표준 입출력 수학 연산 문자열 처리 시간 처리 오류 처리 데이터 검색과 정렬

난수 함수 난수(random number)는 규칙성이 없이 임의로 생성되는 수이다. 난수는 암호학이나 시뮬레이션, 게임 등에서 필수적이다. rand() 난수를 생성하는 함수 0부터 RAND_MAX까지의 난수를 생성

예제: 로또 번호 생성하기 1부터 45번 사이의 난수 발생

실습 코드 #include <stdio.h> #include <stdlib.h> int main(void) { int i; for(i = 0; i < 6; i++) printf("%d ", rand()); return 0; } 41 18467 6334 26500 19169 15724 0에서 32767 사이의 정수로 생성

1부터 45 사이로 제한 printf("%d ", 1+(rand()%45)); 하지만 실행할 때마다 항상 똑같은 난수가 발생된다. 42 18 35 41 45 20

실행할 때마다 다르게 하려면 매번 난수를 다르게 생성하려면 시드(seed)를 다르게 하여야 한다. srand( (unsigned)time( NULL ) ); #include <stdlib.h> #include <stdio.h> #include <time.h> #define MAX 45 int main( void ) { int i; srand( (unsigned)time( NULL ) ); for( i = 0; i < 6; i++ ) printf("%d ", 1+rand()%MAX ); return 0; } 시드를 설정하는 가장 일반적인 방법은 현재의 시각을 시드로 사용하는 것이다. 현재 시각은 실행할 때마다 달라지기 때문이다.

수학 라이브러리 함수

예제 // 삼각 함수 라이브러리 #include <math.h> #include <stdio.h> int main( void ) {         double pi = 3.1415926535;         double x, y;         x = pi / 2;         y = sin( x );         printf( "sin( %f ) = %f\n", x, y );         y = sinh( x );         printf( "sinh( %f ) = %f\n",x, y );         y = cos( x );         printf( "cos( %f ) = %f\n", x, y );         y = cosh( x );         printf( "cosh( %f ) = %f\n",x, y ); } 여러 수학 함수들을 포함하는 표준 라이브러리 sin( 1.570796 ) = 1.000000 sinh( 1.570796 ) = 2.301299 cos( 1.570796 ) = 0.000000 cosh( 1.570796 ) = 2.509178

예제 #include <stdio.h> #include <math.h> #define RAD_TO_DEG (45.0/atan(1)) int main(void) { double w, h, r, theta; printf("밑변과 높이를 입력하시오:"); scanf("%lf %lf", &w, &h); r = sqrt(w * w + h * h); theta = RAD_TO_DEG * atan2(h, w); printf("빗변= %f 각도= %f\n", r, theta); return 0; }  상수를 정의하는 전처리 명령문 밑변과 높이를 입력하시오: 10.0 10.0 빗변= 14.142136 각도= 45.000000

수학 라이브러리 함수들 abs(int x), fabs(double x) abs(-9) // 9를 반환 pow(double x, double y) 인수 x의 y-거듭제곱인 xy 을 계산한다. pow( 2.0, 3.0 );  // 8.0을 반환 sqrt(double x) 주어진 수의 제곱근을 구한다. 만약에 음수가 입력되면 오류가 발생한다. sqrt( 9.0 );       // 3.0을 반환 ceil(double x) ceil은 x보다 작지 않은 가장 작은 정수를 반환 ceil( -2.9 );      // -2.0을 반환 ceil( 2.9 );       // 3.0을 반환 floor(double x) floor()는 x보다 크지 않은 가장 큰 정수를 반환한다. floor( -2.9 );     // -3.0을 반환 floor( 2.9 );      // 2.0을 반환

함수를 사용하는 이유 소스 코드의 중복을 없애준다. 한번 만들어진 함수를 여러 번 호출하여 사용할 수 있다. 한번 작성된 함수를 다른 프로그램에서도 사용할 수 있다. 복잡한 문제를 단순한 부분으로 분해할 수 있다. void print_heading(void) {   printf("*************************************");   printf("  NAME    ADDRESS      PHONE         "); } int main(void)   // 출력이 필요한 위치 #1   print_heading();    ...   // 출력이 필요한 위치 #2 int main(void) { ... read_list(); sort_list(); print_list(); }

Q & A