문제
두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
예제입력
1 3
예제출력
0.33333333333333333333333333333333
풀이
scanf()로 a, b 변수를 받고 prinf()로 a/b를 출력한다. 입력 시엔 변수명 앞에 &을 쓰는 것에 유의한다. 상대오차가 10⁻⁹ 이내여야 한다는 단서가 있으므로 소숫점 아래 9자리까지 실수형으로 출력한다.
중요한 부분은 입력시 a, b 변수를 정수(int)로 받았다면 나누기 연산 시 실수(double)로 형 변환을 해야한다. 이때 (double)(a / b)로 작성하면 (a / b)가 소숫점이 절삭된 정수로 먼저 계산된 뒤 실수 형태로 변환되기 때문에 오차가 발생한다. 나눗셈 연산보다 변수 a의 실수 변환이 먼저 되도록 (double) a / b로 작성한다.
#include <stdio.h>
int main () {
int a, b;
scanf("%d %d", &a, &b);
printf("%.9f", (double)a / b); // 이부분 형 변환
return 0;
}
제출