[백준] 1008번_A/B C
in Study on Coding Test
입력 및 연산에 관한 문제
요새 C언어를 새로 공부하고 있어서 예전에 파이썬으로 풀었던 문제를 다시 풀고 있다.
파이썬으로 하다가 확실히 C로 문제를 풀려고하니 문법적 측면에서 어렵다..
제출했지만 틀린 코드
#include <stdio.h>
int main() {
int a, b;
double c;
scanf("%d %d", &a, &b);
c = (a / b);
printf("%.9f\n", c);
return 0;
}
a와 b를 입력받는 부분까진 문제 없고, 출력하는 부분에서 문제가 생겼다.
뭘까? 생각했는데 우분투에서 돌려보니
int / int 형식이기 때문에 c를 double로 선언했다고 하더라도 몫이 출력되는 결과가 나타난 것이다.
즉, 10과 3을 입력했지만,
의도는 3.3333333333… 이지만 결과가 3.0000000000 으로 나타나는 결과를 초래했다.
정답 코드
실험을 하나 해보았다. 애초에 a와 b를 double로 받으면 어떨까?
#include <stdio.h>
int main() {
double a, b;
scanf("%d %d", &a, &b);
printf("%.9f\n", a/b);
return 0;
}
결과는 정답이었다.
정수로 받은 뒤에 (double)a/b를 통해 결과 값을 실수로 변환하는 방법도 있지만,
애초에 정수가 아니라 실수로 받는 방법도 유효한 것 같다.
실수라는 범위 안에 정수가 있으니까.
와중에 출력 부분에서 .9를 없애고
"%f\n"
으로 해보니 틀렸습니다. 나온다. 너무해.