백준 1008번 : A / B 문제 풀이
입출력과 사칙연산
https://www.acmicpc.net/problem/1008
1008번: A/B
두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
이번 문제는 생각보다 어려웠던 것 같다
이전 문제들과 비슷하게 사칙연산 기호만 바꿔주면 된다고 생각했는데 그게 아니었다.
아래는 처음 짠 코드이다
#include <stdio.h>
int main() {
int a, b;
scanf("%d %d", &a, &b);
printf("%d", a / b);
return 0;
}
문제를 보면 "실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다. " 라고 나와있다
지금 코드의 출력결과는 실수형이 아닌 정수형으로 뒤의 소수점이 나오지 않는다
C 언어의 실수 자료형 타입은
float, double, long double
대략적으로 오차범위가 적은 순으로 나열하면
long double > double > float 순이다
그래서 두번째로 수정한 코드가 아래 코드이다
#include <stdio.h>
int main() {
int a, b;
scanf("%d %d", &a, &b);
printf("%.10f", a / b);
return 0;
}
%.10f 형식지정자를 사용해서 소수점 뒤의 10자리까지 출력하도록 하지만
a / b 의 결과는 정수형(int)이라 오류가 나게 된다.
a / b 의 자료형을 변환해주어야 값이 정상적으로 출력되게 된다
C언어의 자료형 변환 방법은
printf("%.15f", (double) a / b);
변환하고자 하는 자료형을 ()안에 넣고 변수 왼쪽에 써주면 된다
double 자료형을 가지고 출력을 한다고 하더라도
2번째 예제의 입출력 결과는 소수점 이하 자리의 0이 출력된다
%g 형식지정자를 이용하면 소수점 이하 자리의 0을 출력하지 않을 수 있다.
추가로, %e는 과학적 표기를 위해 이용한다
형식지정자를 더 알고 싶다면 아래 사이트를 참고하면 된다
https://codeforwin.org/c-programming/list-of-all-format-specifiers-in-c-programming
List of all format specifiers in C programming - Codeforwin
In C programming we need lots of format specifier to work with various data types. Format specifiers defines the type of data to be printed on standard output. Whether to print formatted output or to take formatted input we need format specifiers. Format s
codeforwin.org
마지막으로 제출한 코드이다
#include <stdio.h>
int main() {
int a, b;
scanf("%d %d", &a, &b);
printf("%.15g", (double) a / b);
return 0;
}
'Coding > baekjoon' 카테고리의 다른 글
[baekjoon] 10926번 : ??! [C] (0) | 2023.11.12 |
---|---|
[baekjoon] 10869번 : 사칙연산 [C] (0) | 2023.11.12 |
[baekjoon] 10998번 : A x B [C] (0) | 2023.11.11 |
[baekjoon] 1001번 : A - B [C] (0) | 2023.11.11 |
[baekjoon] 1000번 : A + B [C] (0) | 2023.11.10 |