728x90

문제1)

세개의 정수를 인자로 전달받아서 그 중 가장 큰 수를 반환하는 함수와 가장 작은 수를 반환하는 함수를 정의해보자. 그리고 이 함수들을 호출하는 적절한 main함수도 작성해보자

#include <stdio.h>
int big(int num1,int num2, int num3){
    int bigger;
    if(num1>=num2){
        bigger=num1;
        if(bigger<num3){
            bigger=num3;
        }
    }
    else{
        bigger=num2;
        if(bigger<num3){
            bigger=num3;
        }
    }
    return bigger;
}
int small(int num1, int num2, int num3){
    int smaller;
    if(num1<=num2){
        smaller=num1;
        if(smaller>num3){
            smaller=num3;
        }
    }
    else{
        smaller=num2;
        if(smaller>num3){
            smaller=num3;
        }
    }
    return smaller;
}

int main(void){
    int a,b,c;
    scanf("%d %d %d", &a, &b,&c);
    printf("%d\n", big(a, b, c));
    printf("%d", small(a,b,c));
    return 0;
}

함수짜는 것을 활용하기 위해 big와 small을 통해 큰수, 작은수를 구해주는 함수를 만들어 주었다. 그리고 비교를 해주는 것을 넣어주었다. return 값은 바로 함수에서 완성되는 숫자로 리턴을 시켜준다. 이를 위해 메인함수에서 값을 3개를 전달해주었다.

 

문제2) 섭씨 온도를 입력하면 화씨 온도를 반환하는 CelToFah라는 이름의 함수와 그 반대로 화씨 온도를 입력하면 섭씨 온도를 반환하는 FahToCel라는 이름의 함수를 정의하고이 두 함수를 호출하는 예제를 완성해보자. 참고로 섭씨와 화씨간 온도 변환의 공식은 다음과 같다.

Fah=1.9*Cel+32

#include <stdio.h>
double CelToFah(double CTF1){
    return 1.8*CTF1+32;
}
double FahToCel(double FTC2){
    return (FTC2-32)/1.8;
}
int main(void){
    int num;
    printf("섭씨->화씨: 1 , 화씨-> 섭씨:2");
    scanf("%d", &num);
    if(num==1){
        double CTF;
        printf("섭씨 온도를 입력하세요");
        scanf("%lf", &CTF);
        printf("%f", CelToFah(CTF));
    }
    else if(num==2){
        double FTC;
        printf("화씨 온도를 입력하세요");
        scanf("%lf", &FTC);
        printf("%f", FahToCel(FTC));
    }
}

이것은 생각보다 간단하다. 어떤 것을 할 건지 선택하는 것을 메인함수 만들고 if 함수를 통해 받는다.

그리고 온도 입력받아서 변환을 해주는 것이 필요하다. 이것은 소수점이 나올 수 있다.

그래서 이를 위해 double형으로 입력을 받는다. 저장은 lf로 해주고 출력은 f로 해주면 된다.

이외의 내용들은 함수 다룰때 배웠던 것이라 큰 문제가 되지 않았다.

 

 

문제3)

인자로 전달된 수 만큼의 피보나치 수열을 출력하는 함수를 정의해보자. 예를 들어서 프로그램 사용자가 5를 입력하면 0에서부터 시작해서 총 5개의 피보나치 수열을 출력해야 한다. 참고로 피보나치 수열은 다음과 같다.

0,1,1,2,3,5,8,13,21,34

이렇듯 피보나치 수열은 0과 1에서 시작한다. 그리고 세번째 이후의 수열부터는 이전이 두 값의 합으로 구성된다. 즉 세번째 수는 0과 1의 합으로 이뤄져서 1이 되고, 네번째 수는 1과 1의합으로 이뤄져서 2가 된다.

#include <stdio.h>
int N,i;
int fib(int N1){
    scanf("%d", &N);
    int num[N]={0,1,};
    for(i=0;i<N;i++){
        if(i<=1) {
            printf("%d ", num[i]);
            
        }
        else{
            num[i]=num[i-2]+num[i-1];
            printf("%d ", num[i]);
            
        }
        
    }
    return num[i];
}
int main(void){
    fib(N);   
    return 0;
}

여기서는 배열을 사용했다. 배열을 알고 있는 상태라 이것을 활용했다. 0과 1도 저장하면서 차례대로 표현하기 위해서이다. 나머지는 일단 0으로 초기화 시키고 차례대로 더해주는 방식을 택했다. 이를 if else문으로 정의했다.

여기서는 함수를 정의하라고 했으므로 main에서 fib(N)을 통해 출력이 아닌 불러오기만 채택하였고 함수를 정의해  return 을 해주었다.

그러면 문제없이 진행이 될 수 있다.  

728x90

+ Recent posts