백준 웹사이트 "10869번 - 사칙연산" 문제풀이입니다.
언어는 C언어입니다. (제출 언어: C99)
문제
소스 코드
#include <stdio.h>
int main(void){
int A, B;
scanf("%d %d", &A, &B);
printf("%d\n", A+B);
printf("%d\n", A-B);
printf("%d\n", A*B);
printf("%d\n", A/B);
printf("%d\n", A%B);
return 0;
}
문제 풀이
두 정수의 덧셈, 뺄셈 등등 사칙연산을 계산하는 문제입니다. 1000번, 1001번 등의 문제들을 하나로 합쳐놓은 셈이죠. Line 10의 'A/B'가 소수로 나오지 않고 정수인 몫으로 출력되는 이유는 A, B가 정수형 int로 선언 되었기 때문입니다 (Line 4). A, B가 int형이기 때문에 컴파일러는 자동으로 A/B를 int형으로 생각하고 계산하기에 7/3의 값을 2로 출력합니다.
만약 이를 소수로 나타내고 싶다면 어떻게 해야할까요?
#include <stdio.h>
int main(void){
float A, B;
scanf("%f %f", &A, &B);
printf("%f\n", A+B);
printf("%f\n", A-B);
printf("%f\n", A*B);
printf("%f\n", A/B);
//printf("%d\n", A%B);
return 0;
}
소스 코드를 위와 같이 'float' 기반으로 모두 바꾼다면, 결과는 달라지게 됩니다.
10.000000
4.000000
21.000000
2.333333
A=7, B=3 일 때의 결과입니다. A, B가 float로 선언되었으므로 출력값들은 모두 소수로 나타나며, A/B의 값도 2.333333이 됩니다. 소수의 나눗셈에서는 '나머지'의 개념이 없기에, Line 11과 같이 A%B를 작성하면 에러가 납니다.
반응형
'코딩 > 백준 BOJ' 카테고리의 다른 글
[백준/C언어] 2588번 - 곱셈 (0) | 2021.12.21 |
---|---|
[백준/C언어] 10430번 - 나머지 (0) | 2021.12.20 |
[백준/C언어] 1008번 - A / B (0) | 2021.12.20 |
[백준/C언어] 10998번 - A × B (0) | 2021.12.19 |
[백준/C언어] 1001번 - A - B (0) | 2021.12.19 |