사용자 정의 함수 10개 만들기(이경훈) - aksrud/3kingOfGod GitHub Wiki

#include <stdio.h>
#include <math.h>
void swap(int* a, int*b); // 스왑(값 서로 바꾸기)
void bubbleSort(int* arr, int length); // 버블 정렬(오름차순)
int binarySearch(int* arr, int target, int first, int end); // 이진 탐색
void printStar(int height); // 별 출력
int fibonacci(int n); // 피보나치 수 출력
int is_prime(int n); // 소수 판별
void gugudan(); // 구구단
int findMax(int* arr, int n); // 최댓값 찾기
int findMin(int* arr, int n); // 최솟값 찾기
void printFactors(int n); // 약수 찾기

int main() {
	// 스왑(값 서로 바꾸기)
	//int a = 5;
	//int b = 3;
	//printf("바꾸기전 : a = %d, b = %d\n", a, b);
	//swap(&a, &b);
	//printf("바꾸기후 : a = %d, b = %d\n", a, b);

	// 버블 소트
	//int arr[9] = {9, 3, 7 ,5 ,8 ,6 ,1, 2, 4};
	//bubbleSort(arr, 9);
	//for (int i = 0; i < 9; i++) {
	//	printf("%d ", arr[i]);
	//}
	
	// 이진 탐색
	//int arr[9] = { 9, 3, 7 ,5 ,8 ,6 ,1, 2, 4 };
	//bubbleSort(arr, 9);
	//int n;
	//printf("어느 수를 찾으실 건가요? : ");
	//scanf_s("%d", &n);
	//int result = binarySearch(arr, n, 0, 9);

	//if (result != -1) {
	//	printf("%d은 %d번쨰 인데스에 있습니다.\n", n, result+1);
	//}
	//else {
	//	printf("찾으시는 %d은 없습니다.\n", n);
	//}

	// 별 출력
	//int n;
	//printf("어느 높이 만큼의 별을 출력하실건가요? : ");
	//scanf_s("%d", &n);
	//printStar(n);

	// 피보나치 수 출력
	//int n;
	//printf("몇 번째 피보나치 수 출력하실건가요? : ");
	//scanf_s("%d", &n);
	//printf("%d", fibonacci(n));

	// 소수 판별
	//int n;
	//printf("어느 수를 소수인지 판별 하실건가요? : ");
	//scanf_s("%d", &n);
	//if (is_prime(n)) {
	//	printf("%d는 소수 입니다.", n);
	//}
	//else {
	//	printf("%d는 소수가 아닙니다.", n);
	//}

	// 구구단 출력
	//gugudan();

	// 최대 최소 찾기 찾기
	//int arr[9] = { 9, 3, 7 ,5 ,8 ,6 ,1, 2, 4 };
	//printf("최댓값은 : %d \n최솟값은 : %d\n", findMax(arr, 9), findMin(arr, 9));

	// 약수 구하기
	printFactors(14);
	return 0;
}

void swap(int* a, int* b) {
	int temp;
	temp = *a;
	*a = *b;
	*b = temp;
}

void bubbleSort(int* arr, int length) {
	for (int i = 0; i < length; i++) {
		for (int j = 0; j < length - i - 1; j++) {
			if (arr[j] > arr[j+1]) {
				swap(arr + j, arr + j + 1);
			}
		}
	}
}

int binarySearch(int* arr, int target, int first, int end) {
	// 탈출 조건
	if (first > end) {
		return -1;
	}

	int mid = (first + end) / 2;
	if (arr[mid] == target) {
		return mid;
	}
	else if (arr[mid] < target) {
		return binarySearch(arr, target, mid + 1, end);
	}
	else {
		return binarySearch(arr, target, first, mid - 1);
	}
}

void printStar(int height) {
	for (int i = 0; i < height; i++) {

		for (int j = 0; j < (height - i - 1); j++) {
			printf(" ");
		}

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

		printf("\n");
	}
}

int fibonacci(int n) {
	if (n == 1 || n == 2) {
		return 1;
	}
	return fibonacci(n - 2) + fibonacci(n - 1);
}

int is_prime(int n) {
	if (n == 1) {
		return 0;
	}
	for (int i = 2; i <= sqrt(n);i++) {
		if (n % i == 0) {
			return 0;
		}
	}
	return 1;
}

void gugudan() {
	for (int i = 2; i <= 9; i++) {
		for (int j = 1; j <= 9; j++) {
			printf("%d * %d = %d\n", i, j, i * j);
		}
		printf("\n");
	}
}

int findMax(int* arr, int n) {
	int max = arr[0];
	for (int i = 1; i < n; i++) {
		if (max < arr[i]) {
			max = arr[i];
		}
	}
	return max;
}

int findMin(int* arr, int n) {
	int min = arr[0];
	for (int i = 1; i < n; i++) {
		if (min > arr[i]) {
			min = arr[i];
		}
	}
	return min;
}

void printFactors(int n) {
	printf("%d의 약수: ", n);
	for (int i = 1; i <= n; i++) {
		if (n % i == 0) {
			printf("%d ", i);
		}
	}
	printf("\n");
}
⚠️ **GitHub.com Fallback** ⚠️