[정답] 52. 함수 개요
◈ 기본 연습
1. 두 개의 정수를 입력 매개변수로 전달받아 큰 수를 반환하는 함수를 작성하시오.
그리고 작성한 함수를 이용해서 2, 9 중에 큰 수를 출력하시오.
답:
//두 개의 정수를 입력 매개변수로 전달받아 큰 수를 반환하는 함수 작성
//그리고 작성한 함수를 이용해서 2, 9 중에 큰 수를 출력
#include <stdio.h>
int FindBig(int a, int b);
int main(void)
{
printf("%d\n", FindBig(2, 9));
return 0;
}
int FindBig(int a, int b)
{
if (a > b)
{
return a;
}
return b;
}
2. 하나의 정수를 입력 매개변수로 전달받아 홀수일 때는 0을 반환하고 짝수일 때는 1을 반환하는 함수를 작성하시오.
그리고 작성한 함수를 이용해서 1~10 사이에 몇 개의 짝수가 있는지 출력하시오.
답:
//하나의 정수를 입력 매개변수로 전달받아 홀수일 때는 0을 반환하고 짝수일 때는 1을 반환하는 함수
//그리고 작성한 함수를 이용해서 1~10 사이에 몇 개의 짝수가 있는지 출력
#include <stdio.h>
int IsEven(int num);
int main(void)
{
int i;
int count = 0;
for (i = 1; i <= 10; i++)
{
if (IsEven(i))
{
count++;
}
}
printf("1~10
사이의 짝수 개수:%d\n",
count);
return 0;
}
int IsEven(int num)
{
return num % 2==0;
}
3. 하나의 정수를 입력 매개변수로 전달받아 소수일 때는 1을 반환하고 그렇지 않을 때는 0을 반환하는 함수를 작성하시오.
여기서 소수란 1과 자기 자신만을 약수로 갖는 수를 말합니다.
그리고 작성한 함수를 이용해서 1~100 사이에 몇 개의 소수가 있는지 출력하시오.
답:
//하나의 정수를 입력 매개변수로 전달받아 소수인지 판별하는 함수 작성
//작성한 함수를 이용해서 1~100 사이에 몇 개의 소수가 있는지 출력
#include <stdio.h>
int IsPrime(int n);
int main(void)
{
int i;
int count = 0;
for (i = 1; i <= 100; i++)
{
if (IsPrime(i))
{
count++;
}
}
printf("1~100
사이의 소수는 %d개\n", count);
return 0;
}
int IsPrime(int n)
{
int i;
for (i = 2; i < n; i++)
{
if (n%i == 0)
{
return 0;
}
}
return 1;
}
4. 두 개의 정수를 입력 매개변수로 전달받아 최소 공배수를 구하는 함수를 작성하시오.
답:
//최소 공배수를 구하는 함수 작성
#include <stdio.h>
int FindLCM(int a, int b);
int main(void)
{
int a, b;
int lcm;
printf("두 개의 정수 입력:");
scanf_s("%d%d", &a, &b);
lcm = FindLCM(a, b);
if (lcm == -1)
{
printf("int 형식 표현 범위에서 최소 공배수를 구할 수 없습니다.\n");
}
else
{
printf("%d와 %d의 최소 공배수는 %d\n",
a, b, lcm);
}
return 0;
}
int FindLCM(int a, int b)
{
int lcm;
if (a > b)//a가 b보다 크면
{
//두 수를 교환
int temp = a;
a = b;
b = temp;
}
for (lcm = b; ; lcm += b)
{
if (lcm%a == 0)
{
return lcm;
}
}
return -1;
}
5. 두 개의 정수를 입력 매개변수로 전달받아 최대 공약수를 구하는 함수를 작성하시오.
답:
//최대 공약수를 구하는 함수 작성
#include <stdio.h>
int FindGCD(int a, int b);
int main(void)
{
int a, b;
int lcm;
printf("두 개의 정수 입력:");
scanf_s("%d%d", &a, &b);
lcm = FindGCD(a, b);
if (lcm == -1)
{
printf("최대 공약수를 구할 수 없습니다.\n");
}
else
{
printf("%d와 %d의 최대 공약수는 %d\n",
a, b, lcm);
}
return 0;
}
int FindGCD(int a, int b)
{
int gcd;
if (a > b)//a가 b보다 크면
{
//두 수를 교환
int temp = a;
a = b;
b = temp;
}
for (gcd = a; ; gcd--)
{
if ((a%gcd==0)&&(b%gcd == 0))
{
return gcd;
}
}
return -1;
}
'언어 자료구조 알고리즘 > 디딤돌 C언어' 카테고리의 다른 글
[정답] 디딤돌 C언어 73. 문자열 정리하기 (0) | 2016.05.01 |
---|---|
[정답] 디딤돌 C언어 67. 정리하기(함수) (0) | 2016.05.01 |
[정답] 디딤돌 C언어 50. 인덱스 연산자 (0) | 2016.05.01 |
[정답] 디딤돌 C언어 49. 간접 연산자 (0) | 2016.05.01 |
[정답] 디딤돌 C언어 47. 포인터 + 정수 (0) | 2016.05.01 |
[정답] 디딤돌 C언어 46. 배열 선언문 (0) | 2016.05.01 |
[정답] 디딤돌 C언어 44.정리하기(제어문) (0) | 2016.05.01 |
[정답] 디딤돌 C언어 43. 제어문 연습 - 별출력 (0) | 2016.04.30 |
[정답] 41. 반복문(while, do while, for) (0) | 2016.04.30 |
[정답] 디딤돌 C언어 40. 선택문(switch case) (0) | 2016.04.30 |