コンピュータの課題5-1

2232 ワード

質問です.
#define _CRT_SECURE_NO_WARNINGS    // scanf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>

int reverse(int num);

int main() {
	int i = 0;
	printf("Enter an integer between 0 and 4294977295: ");
	scanf("%d", &i);
	reverse(i);
	return 0;
}

int reverse(int num) {
	int i=0;
	i = num % 10;
	printf("%d", i);
	if ((num / 10) == 0) return;
	reverse(num /10);
}
質問です.
#define _CRT_SECURE_NO_WARNINGS    // scanf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>

int gcd(int a, int b);

int main() {
	int a=0, b=0;
	while (1) {
		printf("Enter two positive integers: ");
		scanf("%d %d", &a, &b);
		if (a <= 0 || b <= 0) printf("Wrong Input, Try agin!\n");
		else printf("GCD of %d and %d is %d\n",a, b, gcd(a,b));
		system("pause");
	}
	return 0;
}

int gcd(int a, int b) {
	int temp=0;
	if (a < b) {
		temp = a;
		a = b;
		b = temp;
	}
	if (a % b == 0) return b;
	gcd(b, a % b);
}
質問3(これはおかしい)
気が狂った...階乗長金を使うとオーバーフローしません!
#define _CRT_SECURE_NO_WARNINGS    // scanf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>

int factorial2(int num);
int combination2(int n, int r);

int main() {
	int n = 0, r = 0;
	while (1) {
		printf("Enter the inputs : ");
		scanf("%d %d", &n, &r);
		if (n >= 5 && r <= 20 && n >= r) printf("nCr : %d\n", combination2(n, r));
		else printf("Input Error!\n");
		system("pause");
	}
	return 0;
}

int factorial2(int num) {
	if (num == 1 ||num == 0) return 1;
	else return num * factorial2(num - 1);
}

int combination2(int n, int r) {
	return factorial2(n) / (factorial2(n - r) * factorial2(r));
}