◈ 기본 연습
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; }