홈 > IT > IT정보
IT정보

C언어 함수, 포인터, 동적할당 문제풀기 4-6

3 realdragonhead 0 824 0 0

4-6. 실수를 매개변수로 입력받아서 강제 형 변환(Type casting)을 이용하여 정수로 변환한 후 반환하는 함수를 작성하시오. main() 함수에서 이 함수를 호출하고, 반환된 값을 출력하시오.

<CODE>

#include <stdio.h>


int forcechange(double );
void main() {
        double usrinput;
        fputs("실수 입력 : ", stdout);
        scanf("%lf", &usrinput);
        printf("결과 : %d\n", forcechange(usrinput));
}


int forcechange(double x) {
        int result = (int)x;
        return result;
}


<RESULT>

실수 입력 : 1.234567

결과 : 1


4-6A. ceil() 함수를 이용하여 실수의 소수점 이하를 올림한 후 그 값을 반환하는 함수를 작성하시오. main() 함수에서 이 함수를 호출하고, 반환된 값을 출력하시오.

<CODE>

include <stdio.h>
#include <math.h>


double upunderdecpoint(double );
void main() {
        double usrinput;
        puts("실수의 소수점 이하를 올림합니다.");
        fputs("실수 입력 : ", stdout);
        scanf("%lf", &usrinput);
        printf("결과 : %lf\n", upunderdecpoint(usrinput));
}


double upunderdecpoint(double dinput) {
        return ceil(dinput);
}


<RESULT>

실수의 소수점 이하를 올림합니다.

실수 입력 : 1.234567

결과 : 2.000000


4-6B. floor() 함수를 이용하여 실수의 소수점 이하를 내림한 후 그 값을 반환하는 함수를 작성하시오. main() 함수에서 이 함수를 호출하고, 반환된 값을 출력하시오.

<CODE>

#include <stdio.h>
#include <math.h>


double downunderdecpoint(double );
void main() {
        double usrinput;
        puts("실수의 소수점 이하를 내림합니다.");
        fputs("실수 입력 : ", stdout);
        scanf("%lf", &usrinput);
        printf("결과 : %lf\n", downunderdecpoint(usrinput));
}


double downunderdecpoint(double dinput) {
        return floor(dinput);
}


<RESULT>

실수의 소수점 이하를 내림합니다.

실수 입력 : 1.234567

결과 : 1.000000


4-6C. 실수를 매개변수로 입력받아서 소수점 첫째 자리에서 반올림한 후 그 값을 반환하는 함수를 작성하시오. main() 함수에서 이 함수를 호출하고, 반환된 값을  출력하시오.

<CODE>

include <stdio.h>
#include <math.h>


double roundsout(double );
void main() {
        double usrinput;
        puts("소수 첫째 자리에서 반올림합니다.");
        fputs("실수 입력 : ", stdout);
        scanf("%lf", &usrinput);
        printf("결과 : %lf\n", roundsout(usrinput));
}


double roundsout(double dinput) {
        double temp = dinput - floor(dinput);
        if(temp >= (double)0.5)
                return ceil(dinput);
        else
                return floor(dinput);    //if문 삼항연산자 사용가능할 것 같습니다.


}


<RESULT>

[case 1]

소수 첫째 자리에서 반올림합니다.

실수 입력 : 1.3333333

결과 : 1.000000

[case 2]

소수 첫째 자리에서 반올림합니다.

실수 입력 : 1.5555555

결과 : 2.000000


4-6D. 실수와 정수 n을 매개변수로 입력받아서 실수를 10의 n승 자리에서 반올림한 후 그 값을 반환하는 함수를 작성하시오(n<0인 경우 포함). main() 함수에서 이 함수를 호출하고, 반환된 값을 출력하시오.

<CODE>

#include <stdio.h>
#include <math.h>


double roundsunderdecn(double ,int);
void main() {
        int n;
        double usrinput;


        puts("실수와 정수 n을 입력받아 10의 n승 자리에서 반올림을 실시합니다.");
        fputs("실수 입력 : ", stdout);
        scanf("%lf", &usrinput);
        fputs("정수 n입력 : ", stdout);
        scanf("%d", &n);


        printf("결과 : %lf\n", roundsunderdecn(usrinput, n));
}


double roundsunderdecn(double dinput, int numinput) {
        double temp = dinput*pow(10, numinput);
        double temp2 = temp - floor(temp);
        double result;


        if(temp2 >= (double)0.5)
                temp2 = ceil(temp2);
        else
                temp2 = floor(temp2);
        result = floor(temp)+temp2;
        return result = result*pow(10,numinput*(-1));
}


<RESULT>

[case 1]

실수와 정수 n을 입력받아 10의 n승 자리에서 반올림을 실시합니다.

실수 입력 : 1.234567

정수 n입력 : 2

결과 : 1.230000

[case 2]

실수와 정수 n을 입력받아 10의 n승 자리에서 반올림을 실시합니다.

실수 입력 : 1.234567

정수 n입력 : 3

결과 : 1.235000

[case 3] 

실수와 정수 n을 입력받아 10의 n승 자리에서 반올림을 실시합니다.

실수 입력 : 1.234567

정수 n입력 : 0

결과 : 1.000000

[case 4]

실수와 정수 n을 입력받아 10의 n승 자리에서 반올림을 실시합니다.

실수 입력 : 1.765432

정수 n입력 : 0

결과 : 2.000000

0 Comments
Category
Facebook Twitter GooglePlus KakaoStory KakaoTalk NaverBand
PlusFriend Chat