Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

이것저것

정올 - 함수3 본문

Language/C언어

정올 - 함수3

olivia-com 2021. 6. 30. 18:05

http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&sca=10d0

 

JUNGOL

 

www.jungol.co.kr


자가진단1 

재귀함수 이용

#include <stdio.h>

int printmessage(int n);

int main(void) {
	int n;
	scanf("%d", &n);
	printmessage(n);
	return 0;
}

int printmessage(int n) {
	if (n != 0) {
		printf("recursive\n");
		return printmessage(--n);
	}
}

자가진단2

재귀함수 이용

#include <stdio.h>

int printnum(int n);

int main(void) {
	int n;
	scanf("%d", &n);
	printnum(n);
	return 0;
}

int printnum(int n) {
	if (n != 0) {
		printf("%d ", n);
		return printnum(--n);
	}
}

자가진단3

재귀함수 이용

#include <stdio.h>

int printsum(int n);

int main(void) {
	int n;
	scanf("%d", &n);
	printsum(n);
	return 0;
}

int printsum(int n) {
	static int sum = 0;
	if (n != 0) {
		sum += n;
		return printsum(--n);
	}
	else
		printf("%d", sum);
}

자가진단4

#include <stdio.h>
#include <math.h>

int powsum(int n);

int main(void) {
	int n;
	scanf("%d", &n);
	powsum(n);
	return 0;
}

int powsum(int n) {
	static int sum = 0;
	if (n != 0) {
		sum += pow(n%10,2);
		return powsum(n/10);
	}
	else {
		printf("%d", sum);
	}
}

자가진단5

#include <stdio.h>

void dice(int k);
void printresult();
int n, arr[101];

int main(void) {
	scanf("%d", &n);
	arr[0] = 1;
	dice(1);
	return 0;
}

void dice(int k) {
	int i;
	if (k > n) {
		printresult();
		return;
	}
	for (i = arr[k - 1]; i <= 6; i++) {
		arr[k] = i;
		dice(k + 1);
	}
}

void printresult() {
	for (int i = 1; i <= n; i++)
		printf("%d ", arr[i]);
	printf("\n");
}

자가진단6

#include <stdio.h>

int main(void) {
	int N;
	scanf("%d", &N);
	printf("%d", sum(N));
	return 0;
}

int sum(int n) {
	if (n <= 1)
		return 1;
	else
		return sum(n / 2) + sum(n - 1);
}


형성평가1

#include <stdio.h>

void half(int N);

int main(void) {
	int N;
	scanf("%d", &N);
	half(N);
	return 0;
}

void half(int N) {
	if (N < 2) {
		printf("%d ", N);
	}
	else {
		half(N / 2);
		printf("%d ", N);
	}
		

}

형성평가2

#include <stdio.h>

int main(void) {
	int N;
	scanf("%d", &N);
	result(N);
	return 0;
}

int result(int n) {
	if (n <= 2)
		printf("%d ", n);
	else {
		result(n - 2);
		printf("%d ", n);
	}
}

형성평가3

#include <stdio.h>

void dice(int level, int sum);
int arr[6];
int a = 0;

int main(void) {
	int N, M;
	scanf("%d %d", &N, &M);
	dice(N, M);
	return 0;
}

void dice(int N, int M) {
	for (int i = 1; i <= 6; i++) {
		arr[a] = i; // 첫 번째 숫자 지정

		if (a == N-1) { // 숫자 개수가 입력한 숫자와 같은 경우
			int sum = 0;

			for (int j = 0; j < N; j++)
				sum += arr[j]; // 총합 구하기

			if (sum == M) { // 총합이 입력한 숫자와 같은 경우
				for (int k = 0; k < N; k++)
					printf("%d ", arr[k]); // 숫자 출력
				printf("\n");
				return; // 종료
			}

		}
		else {
			a++; // 그 다음번째 숫자 구하기 위해 자리 이동
			dice(N, M);
			a--; // 다시 돌아옴
		}
	}

}

형성평가4

#include <stdio.h>

int main(void) {
	int arr[100] = { 1,2 };
	int n;
	scanf("%d", &n);
	for (int i = 2; i <= n; i++) {
		arr[i] = (arr[i - 1] * arr[i - 2]) % 100;
	}
	printf("%d", arr[n-1]);
	return 0;
}

형성평가5

#include <stdio.h>

void print(int n, int level);
int level = 0;

int main(void) {
	int n;
	scanf("%d", &n);
	print(n, level);
	return 0;
}

void print(int n, int level) {
	if (n == 1)
		printf("%d", level);

	if (n % 2 == 0) {
		n /= 2;
		print(n, ++level);
	}
	else {
		n /= 3;
		print(n, ++level);
	}
}

형성평가6

#include <stdio.h>

void multiply(int n);
int multi = 1;

int main(void) {
	int a, b, c;
	scanf("%d %d %d", &a, &b, &c);
	multiply(a*b*c);
	return 0;
}

void multiply(int n) {
	if (n == 0) {
		printf("%d", multi);
		return;
	}
	int temp;
	temp = n % 10;
	if (temp != 0)
		multi *= temp;
	multiply(n / 10);
}

'Language > C언어' 카테고리의 다른 글

정올 - 문자열2  (0) 2021.07.11
정올 - 문자열1  (0) 2021.07.11
정올 - 함수2  (0) 2021.06.29
정올 - 함수1  (0) 2021.06.28
정올 - 배열2  (0) 2021.06.27