본문 바로가기

코딩/백준 BOJ

[백준/C언어] 10869번 - 사칙연산

백준 웹사이트 "10869번 - 사칙연산" 문제풀이입니다.

언어는 C언어입니다. (제출 언어: C99)

 

 


문제

 

10869번: 사칙연산

두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. 

www.acmicpc.net


소스 코드

#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