본문 바로가기
개발&코딩/C

[C] 함수의 구조와 예제 모음

by 우동이 2020. 9. 9.
300x250

수학적 정의의 함수와 코딩에서의 함수는 다른 의미라고 봐야한다

개발을 위한 함수는 Function 즉 필요한 기능의 집합이다

특히나 함수를 이용한 개발구조의 C 언어에 있어서

함수는 더욱이 큰 의미를 가진다.

C언어 - 함수의 기초

#include <stdio.h>

int tax(int salary); // 함수선언 function(매개변수1,매개변수2...) 

int main()
{
	double sal=0; //월급 공제전 수령액 
	double result=0;
	printf("월급 수령액을 입력하시오 >> ");
	scanf("%lf", &sal);
	
	result=tax(sal);
	
	printf("이번 달 월급 실수령액은 %.0lf원 입니다. ", result);

    return 0;
}
int tax(int salary)
{
	double result=0;
	result = salary-(salary * 0.045);
	return result; 
}
>>>월급 수령액을 입력하시오 >> 1000000
이번 달 월급 실수령액은 955000원 입니다.

이 코드는 월급 수령액을 입력받은 후 4.5프로의 수치를 공제 한 후 월급 실수령액을 

출력해주는 코드이다

 

원래 공제사항은 훨씬 많지만 코드가 더 난잡해질 수 있기 때문에 국민연금만 공제한다

함수는 return이 있는 함수 없는 void 함수로 나뉘는데

위에 선언한 int형 함수 tax는 입력받은 월급 수령액을 공제한 후 결과값을 다시

main 함수로 return 해준다

result변수에 그 값을 받아 출력해주는 구조인데

 

함수를 사용하기 위해서는 main 함수 위쪽 상단에 함수를 선언해주어야 한다

 

그리고 함수의 구조를 main함수 아래에 작성해주면 된다.

 

main 함수에서 함수를 사용하기 위해서는 함수명을 적어 호출해주면 된다

만약 함수에 보내줘야 하는 값이 있다면 main 함수에서는 보내줄 변수명을 적고

 

함수의 구조를 선언한곳에서는 매개변수라는 변수를 통해 그 값을 받아 사용한다.

 

C언어 함수 예제1 // 두 수의 곱을 구해주는 함수 만들기

#include <stdio.h>

double mul_res(double a, double b);

int main()
{
	double num1=0, num2=0;
	double res=0;
	printf("곱할 두 수를 입력하시오 >> ");
	scanf("%lf%lf", &num1, &num2);
	
	res=mul_res(num1, num2);
	
	printf("두 수의 곱은 %.3lf입니다.\n", res);

    return 0;
}

double mul_res(double a, double b)
{
	double result=0;
	
	result=a*b;
	return result;
}
>>> 곱할 두 수를 입력하시오 >> 3.0 4.0
두 수의 곱은 12.000입니다.

위 코드는 두 수의 곱을 return 해주는 함수를 작성한 코드이다.

num1과 num2에 값을 받아 함수 mul_res에 보내준다.

 

C언어 함수 예제2 // 매개변수가 없는 or 리턴값이 없는 함수

#include <stdio.h>

int avg();
void print_star();

int main()
{
	int res=0;
	
	res=avg();
	printf("매개변수는 없지만 리턴값이 존재하는 함수 avg : %d\n", res);
	print_star(); 

    return 0;
}
int avg()
{
	return 5;
}
void print_star()
{
	for(int i=1; i<=5; i++)
	{

		for(int j=1; j<=i; j++)
		{
			printf("*");
		}
		printf("\n");
	}
}

>>> 매개변수는 없지만 리턴값이 존재하는 함수 avg : 5
*
**
***
****
*****

함수를 두개 작성했다 

int avg() 함수는 매개변수가 없지만 return이 존재하는 함수의 형태이고

print_star() 함수는 return 이 존재하지 않는 void형 함수이다 매개변수 역시 없는 형태이지만

매개변수가 존재할수도 있다.

 

C언어 함수 예제3 // 공대과제용 사칙연산 프로그램 만들기

#include <stdio.h>

void print_menu();
double add(double a, double b);
double sub(double a, double b);
double mul(double a, double b);
double div(double a, double b);

int main()
{
	double num1, num2=0;
	int chs=0;
	double result=0;
	print_menu();
	scanf("%d", &chs);
	printf("원하는 두 수를 입력하시오 >> ");
	scanf("%lf%lf", &num1, &num2);
	
	switch(chs)
	{
		case 1:
			result=add(num1,num2);
			printf("result : %.0lf",result);
			break;
		case 2:
			result=sub(num1,num2);
			printf("result : %.0lf",result);
			break;
		case 3:
			result=mul(num1,num2);
			printf("result : %.0lf",result);
			break;
		case 4:
			result=div(num1,num2);
			printf("result : %.6lf",result);
			break;	
	}
    return 0;
}

void print_menu()
{
	printf("----------------------\n");
	printf("원하는 메뉴를 입력하시오>> (1.더하기2.뺄셈3.곱셈4.나눗셈))\n");
	printf("----------------------\n");
}
double add(double a, double b)
{
	return a+b;
}
double sub(double a, double b)
{
	return a-b;
}
double mul(double a, double b)
{
	return a*b;
}
double div(double a, double b)
{
	return a/b;
}
>>> 
----------------------
원하는 메뉴를 입력하시오>> (1.더하기2.뺄셈3.곱셈4.나눗셈))
----------------------
4
원하는 두 수를 입력하시오 >> 3 2
result : 1.500000

이 코드는 공대를 가서 C를 배워본 사람이라면 자주 짜게 될 프로그램이다

사칙연산을 수행하는 프로그램이다 

함수들과 switch,case문을 사용하여 제작했다.

 

300x250

댓글