Let's kick it

[혼공C]ch.02_확인문제 1번 다양한 버전 본문

c언어

[혼공C]ch.02_확인문제 1번 다양한 버전

bloggerddori 2025. 1. 7. 23:51

78p의 확인문제 1번, 각 진법에 맞게 빈칸을 채우는 문제인데 이걸 코드로 구현해 보고 싶어 풀어봤습니다!

정수인 10진수의 값이 주어지고 각 진법(8진수,16진수, 2진수)에 맞춰 바꿔보자

 

1.

수를 배열에다가 넣고 진법을 하나씩 출력하도록 해보자 해서 구현하고자 한 건데 처음엔 16진법을 어떻게 표현할지 막막했는데 (9를 넘어가면 A가 되는 것을 어떻게 해야 할지 막막했었음) 변환문자를 사용하면 간단하다는 걸 깨닫고 변환 문자를 사용한 코드로 짜보았습니다. 직접 변환하는 방법도 직접 해보고 올리겠습니다!

8진수%o,
16진수%x(소문자) 또는 %X(대문자)
저는 %X를 이용해 대문자로 표기했습니다. 그리고 2진수만 직접 구현하면 되는 건데 2진수는 따로 함수를 만들어 구현했습니다.

그리고 배열을 사용해 여러 수를 저장하고 순서대로 출력하도록 하는데, 이때 while(1)문을 사용해 -1을 만나기 전 까지는 무한 반복합니다. 

 

2.

이번엔 무한 반복하는 while(1)문이 아닌 주어진 만큼 반복하는 for문을 사용하는 걸로 바꿔보았습니다.

scanf로 확인해 볼 개수가 몇 개인지 받고 그만큼 for문을 돌리는데, 입력받은 값을 배열에 넣고 배열의 값을 차례대로 변환해 출력하도록 했습니다.

 

 

3.

클로드에게 더 수정할 부분이 있는지 물어보고 나서 수정한 코드 내용입니다.

배열 크기가 고정되어 있는데, 사용자가 그 이상의 수를 입력하려고 하면 문제가 생길 수 있으니 입력받을 때 체크할 수 있도록 if문도 추가해 주었고(유효성 검사),
나중에 배열 크기를 늘리거나 할 때 편하도록 상수로 정의해 주었습니다.
그리고 for문안의 변수명인 i는 서로 다른 for문이라 범위가 겹치지 않기 때문에 재사용했습니다.
또 input 변수는 for문 안에서만 사용되어 for문 안으로 이동했습니다.

'c언어' 카테고리의 다른 글

[혼공C] 1주차_기본 셋팅  (0) 2025.01.06