728x90
/* 섭씨 온도 입력하면 화씨 온도 반환 CelToFah 함수
그 반대 FahToCel 함수 정의및 호출
Fah=1.8 x Cel+32 */
#include <stdio.h>
double CelToFah(double c)
{
return 1.8*c + 32;
}
double FahToCel(double f)
{
return (f - 32) / 1.8;
}
int main()
{
int select;
double num;
printf("1. 섭씨℃->화씨℉ 2. 화씨℉->섭씨℃-\n");
printf("선택:");
scanf("%d", &select);
if (select == 1)
{
printf("섭씨℃ 입력: ");
scanf("%lf", &num);
printf("섭씨℃->화씨℉: %f \n", CelToFah(num));
}
else if (select == 2)
{
printf("화씨℉ 입력:");
scanf("%lf", &num);
printf("화씨℉->섭씨℃: %f \n", FahToCel(num));
}
return 0;
} |
/* 인자로 전달된 수만큼의 피보나치 수열을 출력하는 함수
5를 입력하면 5! */
#include <stdio.h>
void Fibo(int num)
{
int f1 = 0;
int f2 = 1;
int f3;
int i;
if (num == 1)
printf("%d ", f1);
else
printf("%d %d ", f1, f2);
for (i = 0; i<num-2; i++) // 0과 1일 경우는 위의 if~else문에서 출력
{
f3 = f1 + f2;
printf("%d ", f3);
f1 = f2;
f2 = f3;
}
}
int main()
{
int n;
printf("출력하려는 피보나치 수열갯수 (1이상 입력) : ");
scanf("%d", &n);
if (n < 1)
{
printf("1 이상 값 입력하세요 \n");
return -1;
}
Fibo(n);
return 0;
} |
최대 공약수(Greatest Common Measure) 구하기 (유클리드 호제법 이용)
알고리즘
- 두 수 n1,n2 입력
- n이 0이라면, n2 출력하고 알고리즘 종료.
- n이 n2를 나누어 떨어지면, n을 출력하고 알고리즘 종료.
- 그렇지 않으면, n2를 n1로 나눈 나머지를 새롭게 n2에 대입하고, n2와 n1을 바꾸고 3.으로 돌아온다.
예를 들어 6, 12의 GCM을 구할 때, 12가 6을 나누어 떨어지니 6을 출력하고 알고리즘을 종료한다.
#include<stdio.h>
int GCM(int n1, int n2);
int main(void)
{
int n1;
int n2;
printf("두 개의 정수 입력: ");
scanf("%d %d", &n1, &n2);
printf("GCM : %d \n", GCM(n1, n2));
return 0;
}
int GCM(int n1, int n2)
{
int result;
result = n1;
while(n1%result !=0 || n2%result !=0)
result--;
return result;
} |
이 문제에선 6, 9의 GCM을 구한다면,
int result; result = n1; while(n1%result !=0 || n2%result !=0) result--
n1=6, result=6
6과 6을 나눈 나머지는 0, 9와 6을 나눈 나머지는 3이므로
=0 (false) || !=0 (true) 가 된다.
따라서 result--가 되고 while을 반복해나가다보면
6%3=0 || 9%3=0 이 되어 while문을 빠져나가고 result값인 3을 return하며 종료된다.
'Study > C' 카테고리의 다른 글
c언어 복습 - 문자와 문자열 관련 함수 (0) | 2016.08.22 |
---|---|
c 복습-문제풀이2 (0) | 2016.08.22 |
2016-04-07-업무일지_구조체 및 함수 (0) | 2016.04.07 |
2016-04-06-업무일지_포인터 및 함수 (0) | 2016.04.06 |
20160405_포인터와 배열 (0) | 2016.04.05 |