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함.
}