문제:
다음은 화씨온도를 섭씨온도로 변환하는 프로그램이다.
다음 프로그램을 실행시켜보고, 발생하는 문제와 원인을 설명하고 소스를 수정하시오.
단, 공식은 다음을 참고하라.
소스:
#include <stdio.h>
int main(void){
double f_temp;
double c_temp;
printf("Fahrenheit(F) : ");
scanf(" %lf", &f_temp);
c_temp = 5 / 9 * (f_temp - 32);
printf("Celsius(C) : %lf", c_temp);
return 0;
}
설명:
문제: 어느 수에게나 0을 출력한다.
원인: c_temp에 넣는 계산식을 살펴보면, 5 / 9가 원인임을 알 수 있다.
정수 끼리의 연산이기 때문에 해당 연산 결과는 0이 되는 것이다. 그러므로 어떠한 값을 받아도 결과값은 0이 된다.
둘 중의 하나를 실수형으로 바꾸어 계산하여 문제를 시정할 수 있다.
주의:
정수 연산 정수 → 정수
정수(실수로 승격) 연산 실수 → 실수
실수 연산 실수 → 실수
수정 소스:
#include <stdio.h>
int main(void){
double f_temp;
double c_temp;
printf("Fahrenheit(F) : ");
scanf(" %lf", &f_temp);
c_temp = 5.0 / 9.0 * (f_temp - 32);
printf("Celsius(C) : %lf", c_temp);
return 0;
}
처음 소스 화면:
수정 소스 화면:
'문제로 함께하는 C언어' 카테고리의 다른 글
문제6. 탄도 위치 계산 (0) | 2017.01.09 |
---|---|
문제4. 태양에서 빛이 오는 시간 계산 (0) | 2017.01.09 |
문제3. 원의 면적 계산 (0) | 2017.01.06 |
문제2. 정수 3개 더하기 (0) | 2017.01.05 |
문제1. 덧셈 프로그램 (0) | 2017.01.05 |