예제
예제 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 |