05. 함수

2025. 8. 5. 12:30·C/Assignment

예제

예제 53

함수 이용해서 두 수 중 큰 수 찾기

두 수를 입력받고, 그 중 큰 수를 찾아 반환한다.

반환하는 로직은 func 함수를 정희하고 사용해서 두 수 중 큰 수를 찾는다.

#include<stdio.h>

int func(int a,int b)
{
    if (a>b)
    return a;
    else
    return b;
}

int main()
{
    int num1;
    int num2;
    printf("첫번째 정수 입력 : ");
    scanf("%d",&num1);
    printf("두번째 정수 입력 : ");
    scanf("%d",&num2);
    printf("큰 수 : %d\n",func(num1,num2));

    return 0;
}

예제54

함수 이용해서 세 수 중 큰 수 찾기

세 수 중 큰 수를 찾아 반환하는 func 함수를 이용해서 세 수 중 큰 수를 찾는다.

#include<stdio.h>

int func(int a,int b, int c)
{
    if (a>b)
    {
        if (a>c)
        return a;
        else if (a<c)
        return c;
    }
    else if (b>a)
    {
        if (b>c)
        return b;
        else if (b<c)
        return c;
    }
}

int main()
{
    int num1;
    int num2;
    int num3;
    printf("첫번째 정수 입력 : ");
    scanf("%d",&num1);
    printf("두번째 정수 입력 : ");
    scanf("%d",&num2);
    printf("세번째 정수 입력 : ");
    scanf("%d",&num3);
    printf("가장 큰 수 : %d\n",func(num1,num2,num3));
    
    return 0;
}

예제55

함수 이용해서 1부터 10까지의 약수 구하기

임의의 수에 대한 약수 구하는 func 함수를 이용해서 1부터 10까지의 수에 대한 약수를 구한다.

#include<stdio.h>

int func()
{
    int i;
    int j;
    for(i=1;i<11;i++)
    {
        printf("%d의 약수 :",i);
        for(j=1;j<i+1;j++)
        {
            if (i%j == 0)
            printf("%d ",j);
        }
        printf("\n");
    }
}

int main()
{
    printf("main() start\n");
    func();

    return 0;
}

예제56

재귀함수 이용해서 1부터 입력 받은 수까지의 합 구하기

재귀함수를 사용하는 방법을 알아보겠습니다.

1부터 3까지의 합은 다음과 같습니다.

3 + 2 + 1

이것을 다음과 같이 나타낼 수 있습다.

3 + 1부터 2까지의 합

여기서 ‘1부터 3까지의 합’을 함수 호출 형식으로 다음과 같이 나타낼 수 있다.

sum(3)

sum(3)은 다음과 같은 의미를 지닌다

3 + sum(2)

3을 a로 일반화 시키면 다음과 같은데 1부터 a까지의 합을 의미한다

sum(a) = a + sum(a - 1)

그런데 1부터 1까지의 합은 1이므로 a가 1인 경우에는 1이 된다

sum(1) = 1

이런 내용을 포함해서 다시 정리하면 다음과 같다.

sum(a) = 1 (n ≤ 1)

= a + sum(a - 1) (그 외)

이런 개념을 이용해서 1부터 임의의 수까지의 합을 구하는 sum 재귀함수를 만들어서 1부 터 입력 받은 수까지의 합을 구한다.

#include<stdio.h>

int re_func(int num)
{
    int sum = 0;
    if (num == 1)
    return 1;
    else
    sum = num + re_func(num-1);
    return sum;
}

int main()
{
    printf("정수 : ");
    int num1;
    scanf("%d",&num1);
    printf("1부터 %d까지의 합 : %d",num1, re_func(num1));

    return 0;
}

예제57

재귀함수 이용해서 피보나치수열 구하기

피보나치수열의 a번째 항은 다음과 같다.

fibo(a) = 1 (a≤2)

= fibo(a-1) + fibo(a-2) (그 외)

이런 개념을 이용해서 피보나치수열의 임의의 항을 구하는 fibo 재귀함수를 만들어서 입력 받은 위치에 대한 피보나치수를 구한다.

#include<stdio.h>

int re_fibo(int num)
{
    int fibo;
    if ((num == 1)||(num == 2))
    return 1;
    else
    fibo = re_fibo(num-1) + re_fibo(num-2);
    return fibo;
}

int main()
{
    printf("정수 : ");
    int num1;
    scanf("%d",&num1);
    printf("피보나치 %d번째 항의 값 : %d",num1, re_fibo(num1));

    return 0;
}

과제

과제 47

함수를 이용해서 두 수중 작은 수를 찾는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>

int deter(int a, int b)
{
    if (a > b)
    return b;
    else
    return a;
}

int main(void)
{
    int num1;
    int num2;
    printf("첫번째 정수 입력 : ");
    scanf("%d",&num1);
    printf("두번째 정수 입력 : ");
    scanf("%d",&num2);
    printf("작은 수 : %d",deter(num1,num2));
}

과제 48

소수 판별하는 함수를 이용해서 2부터 10까지의 수에 대해 소수인지 아닌지를 출력하는 순서도와 C 프로그램을 작성하여라

#include<stdio.h>

int deter()
{
    int i;
    int j;
    int count;
    for(i=2;i<11;i++)
    {
        printf("%d : ",i);
        if (i==2)
        count = 0;
        else
        count = 0;
        {
            for(j=2;j<i;j++)
            {
                if (i%j == 0)
                count += 1;
            }
        }
        if (count == 0)
        printf("소수\n");
        else
        printf("소수아님\n");
    }
    return 0;
}

int main(void)
{
    deter();
    
    return 0;
}

과제 49

계승을 구하는 재귀함수를 이용해서 입력 받은 수에 대한 계승을 구하는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>

int re_facto(int num)
{
    int facto;
    if (num == 1)
    return 1;
    else
    {
        facto = re_facto(num-1) * num;
        return facto;
    }
    return 0;
}

int main(void)
{
    printf("정수 : ");
    int num1;
    scanf("%d",&num1);
    printf("%d",re_facto(num1));
    
    return 0;
}

'C > Assignment' 카테고리의 다른 글

07. 간단한 프로그램 만들기 2  (6) 2025.08.05
06. 간단한 프로그램 만들기 1  (4) 2025.08.05
CS study 4  (0) 2025.08.05
CS study3  (1) 2025.08.05
04. 배열  (0) 2025.06.13
'C/Assignment' 카테고리의 다른 글
  • 07. 간단한 프로그램 만들기 2
  • 06. 간단한 프로그램 만들기 1
  • CS study 4
  • CS study3
m_Dev
m_Dev
  • m_Dev
    m_Dev
    m_Dev
  • 전체
    오늘
    어제
    • 분류 전체보기
      • MAIN STUDY
        • 정보보안
        • 빅데이터
        • 정보처리
        • 컴퓨터 구조
        • 기타
      • JOB
        • Study
        • Project
      • LMS 7
        • 개발일지
      • FRAMEWORK
        • Qt
        • MFC
        • Winform
        • WPF
        • MAUI
      • NETWORK
        • Study
        • Assignment
      • PYTHON
        • Set
        • Study
        • Assignment
        • Project
      • C
        • Set
        • Study
        • Assignment
        • Project
      • C++
        • Set
        • Study
        • Assignment
        • Project
      • C#
        • Set
        • Study
        • Assignment
        • Project
      • DATABASE
        • MySQL
        • SQLite
      • IDE
        • VisualStudioCode
        • VisualStudio
        • Pycharm
        • Colab
      • 기타
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
m_Dev
05. 함수
상단으로

티스토리툴바