본문 바로가기

프로그래밍/코딩 첫 걸음

21-05-05

1. 함수 적용 예제

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int get_max(int x, int y)
{
	if (x > y) return x;
	else return y;
}

int get_integer()
{
	int value;
	printf("정수를 입력하시오: ");
	scanf("%d", &value);
	return value;
}

int main()
{
	int a = get_integer(); 
	int b = get_integer();


	printf("더 큰 값은 %d 입니다.\n", get_max(a, b));

	return 0;
}

 


2. 팩토리얼

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

long factorial(int n)
{
	long result = 1;

	for (int i = 1; i <= n; i++)
		result *= i;
	return result;
}

int main()
{
	int n;
	printf("알고 싶은 팩토리얼의 값은?");
	scanf("%d", &n);
	printf("%d!의 값은 %d입니다.\n", n, factorial(n));

	return 0;
}

 


3. 섭씨 / 화씨 변환기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void printOptions()
{
	printf("c : 섭씨온도에서 화씨온도로 변환\n");
	printf("f : 화씨온도에서 섭씨온도로 변환\n");
	printf("q : 종료\n");
}

double C2F(double c_temp)
{
	return 9.0 / 5.0 * c_temp + 32;
}

double F2C(double f_temp)
{
	return(f_temp - 32.0) * 5.0 / 9.0;
}

int main()
{
	char choice;
	double temp;
	while (1) {
		printOptions();
		printf("메뉴에서 선택하세요.");
		choice = getchar();
		if (choice == 'q') break;
		else if (choice == 'c') {
			printf("섭씨온도: ");
			scanf("%lf", &temp);
			printf("화씨온도 : %lf\n", C2F(temp));
		}
		else if (choice == 'f') {
			printf("화씨온도: ");
			scanf("%lf", &temp);
			printf("섭씨온도: %lf\n", F2C(temp));
		}
		getchar();

	}
	return 0;
}

 

while(참)은 무한 반복을 의미

getchar() : 엔터키 문자를 삭제하기 위해 필요하다는데 아직은 모르겠다.

 


4. 조합(Combination)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int get_int();
int C(int n, int r);
int F(int n);

int main()
{
	int a, b;
	a = get_int();
	b = get_int();
	printf("C(%d, %d)=%d\n", a, b, C(a, b));
	return 0;
}

long C(int n, int r)
{
	return(F(n) / (F(r) * F(n - r)));
}

int get_int()
{
	int n;
	printf("정수를 입력하세요 : ");
	scanf("%d", &n);
	return n;
}

long F(int n)
{
	int i;
	long result = 1;

	for (i = 1; i <= n; i++)
		result *= i;
	return result;
}

 

n이 13이상일 때부터는 overflow가 발생한다.

 


5. 소수 찾기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int get_int(void)
{
	int n;

	printf("정수를 입력하시오: ");
	scanf("%d", &n);
	return n;
}

int is_prime(int n)
{
	int i;

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

int main()
{
	int n, result;
	n = get_int();
	
	if (is_prime(n) == 1)
		printf("%d은 소수입니다.\n", n);
	else
		printf("%d은 소수가 아닙니다.\n", n);
	return 0;
}

 

교재의 코드이지만 1을 소수로 판정한다는 심각한 오류가 있다.

올바른 코드를 다음과 같이 짤 수 있다.

 

int is_prime(int n)
{
	int i;
	int d = 0;
	for (i = 1; i <= n; i++)
	{
		if (n % i == 0)
			d++;
	}
	return (d == 2); //d==2가 참일 경우 참(1)을 return함.
}

 

 

 

'프로그래밍 > 코딩 첫 걸음' 카테고리의 다른 글

21-05-18  (0) 2021.05.18
21-05-17  (0) 2021.05.17
21-05-15  (0) 2021.05.15
21-05-07  (0) 2021.05.07
21-05-06  (0) 2021.05.06