Language/C

[ C ] [ scanf() 연습 문제 ] 섭씨 온도 → 화씨 온도 변환 프로그램

곽수진 2021. 9. 13. 19:25
반응형
섭씨로 표시된 온도 측정값을 화씨 표시의 온도 값으로 변환하는 프로그램을 작성해보자.

단, 출력은 소수점 둘째자리 까지만 함


화씨 = 섭씨 * (9/5) + 32

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void) {

    double c;

    printf("%s", "섭씨 온도 입력: ");
    scanf("%lf", &c);

    double f;
    f = c * (9 / 5) + 32;

    printf("화씨온도 %.2f\n", f);

    return 0;
}

 

결과값 출력 모습

 

▶ 제대로 출력되는 것처럼 보이지만 계산 값이 틀림(논리 오류 발생)

섭씨 온도가 1이라고 할 때, 화씨 온도는 1*(9/5)+32 = 33.8이지만 소수점 뒷자리가 0으로 출력됨

→ c언어는 정수 계산을 우선시하기 때문에 나타나는 오류

정수 / 정수가 아닌 정수 / 실수로 바꾸면 오류 해결

 

 

★ 오류 해결 ★

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void) {

    double c;

    printf("%s", "섭씨 온도 입력: ");
    scanf("%lf", &c);

    double f;
    f = c * (9.0 / 5) + 32;

    printf("화씨온도 %.2f\n", f);

    return 0;
}

 

결과값 출력 모습

 

반응형