본문 바로가기

C 언어

백준으로 배우는 C 언어 07. A / B

이번 문제는 나눗셈 문제입니다. 원래 이 전에 뺄셈과 곱셈 문제가 두 개 더 있지만 06번 강좌랑 같은 내용을 다루기 때문에 중복이 돼서 바로 나눗셈 문제로 넘어온 점 양해 부탁드립니다. 이번 문제를 살짝 미리 소개하자면 정수만 사용한 저번과는 달리, 이번에는 실수를 사용해야 합니다. 새로운 변수에 대해서 배울 차례죠 ㅎㅎ


 

백준으로 배우는 C 언어 05. 개

고양이에 이어서 다시 한번 특수 문자를 활용한 문제입니다. 이번에는 개를 그려서 출력해야 하는데요, 고양이보다 조금 더 복잡해졌습니다. 그래도 원리 자체는 비슷하니 바로 시작해 보죠! 백준으로 배우는 C..

torotoblog.tistory.com

 

백준으로 배우는 C 언어 06. A + B

지금까지 printf 함수로 출력만 해 왔다면 이번 문제에서는 scanf 함수를 사용해서 입력된 값을 가져올 겁니다. 입력이 있다면 그 값을 저장할 변수도 필요하겠죠. 이 문제에서는 정수 int 변수를 사용해서 값을..

torotoblog.tistory.com


입출력과 사칙연산의 8번째 문제 A/B(#1008) 문제네요! 이제 슬슬 끝이 보입니다. 이번에는 두 정수를 입력받아 나눈 값을 출력을 해야 하는데요, 덧셈, 뺄셈, 곱셈과는 다르게 나눗셈은 소수점이 나올 수가 있죠. 그럼 코딩을 바로 시작해 보도록 할까요? 

#include <stdio.h>

int main(void) {
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%.9lf\n", (double)a/b);
    return 0;
}

저번과 비슷하지만 조금 다른 부분이 하나 보이죠? printf에서 사용된 형식 지정자는 처음 보는 형식이고 a 변수 앞에 있는 (double)은 새롭게 추가되었네요. 바로 이 부분 때문에 나눗셈은 뺄셈, 곱셈처럼 전 강좌랑 통합되지 않고 따로 떨어지게 됐죠.

우선 문제에서 정수를 입력받으라 했으니 5번 줄 까지는 저번과 같게 int 변수와 정수 형식 지정자를 사용해야 합니다. 하지만 정수를 정수로 나누게 되면 몫도 정수로 나오기 때문에 1/3 같이 정수로 나누어 떨어지지 않는 수들은 소수점을 버리게 되는데요, 1/3을 하면 0.3333이 아니라 소수점을 버린 0이 되어버리죠. 소수점을 사용하고 싶다면 나누는 숫자 중 하나라도 실수여야 합니다. 실수 ÷ 정수, 정수 ÷ 실수, 실수 ÷ 실수의 몫들은 모두 소수점이 포함되는 실수로 나오게 되죠. 실수형 변수로는 대표적으로 float(소수점 6자리까지 표현)double(소수점 15자리까지 표현)이 있습니다.

printf("%.9lf\n", (double)a/b);

문제에서는 실제 정답과 출력 값의 오차가 소수점 9자리 이하면 정답이라 했기 때문에 소수점 9자리까지는 출력이 돼야 합니다. 그렇기 때문에 소수점 15자리까지 출력이 가능한 double 형식을 사용해야 하죠. int가 아닌 double을 출력해야 하기 때문에 형식 지정자를 %d가 아닌 %lf를 사용해야 하는데요, 소수점을 9자리로 맞추기 위해서 %.9lf라고 적으면 됩니다. 그러면 무조건 소수점 9자리까지 나타나게 되는데요, 1/2처럼 소수점 한자리만 있는 값들도 0.500000000 이렇게 0으로 출력됩니다. 

a와 b 변수는 정수 형식이죠. 위에서 몫을 실수로 나타내기 위해서는 하나라도 실수가 포함되어있다 했는데요, 그렇다면 둘 중 하나를 정수에서 실수로 변환해 주어야 합니다. 변환하는 방법은 아주 간단한데요, 위 코드에서 보이는 것처럼 변수 앞에 (double)을 붙여주면 됩니다. 그러면 이제 변수 a는 int가 아닌 double 형식의 변수가 된 겁니다. 주의할 점은 (double)(a/b)라고 적으면 안 되는데요, 수학에서 괄호 안에 있는 공식을 먼저 푸는 것처럼 (a/b)가 되어버리면 실수로 변환하기 전에 정수인 상태에서 먼저 나눗셈을 하게 됩니다. 그러면 소수점이 사라지죠. 

자, 이제 테스트를 해 봅시다. 실행시킨 뒤 정수 두 개를 입력하면 몫이 소수점 9자리까지 잘 나오네요.

제출을 해 봅시다! 백준으로 돌아와서 언어를 C로 선택한 뒤 제출해 주세요.

성공!


 

백준으로 배우는 C 언어 08. 사칙연산

지금까지 덧셈, 뺄셈, 곱셈, 나눗셈을 배웠었죠! 그렇다면 이번에는 복습 겸 사칙연산 네 가지와 더불어 나눈 후 나오는 나머지 또한 출력하는 코드를 작성해 봅시다. 나머지는 아직 한 번도 안 해봤지만 다행히..

torotoblog.tistory.com