문제 : 10진수를 입력받아 2진수 변환하여 출력하시오
풀이: 결론부터 말하자면 아래와 같이 된다.
핵심은, '(2의 n승)>10진수(num)'가 되는 n을 찾는 것이다.
그 10진수의 최초 자리수가 (n-1이다). 그리고 그 n을 배열 순서대로 대입한다.
그 다음 자리수에 대해서도 마찬가지로 구한다. 즉 , 나머지 부분의 숫자'num=이전num-(2의 n-1승)' 이다.
메인함수의 printarr은 변환된 2진수의 각 자리수를 저장하기 위한 배열이다.
아래 for문으로 최초 자릿수를 구하고, if문에서 그 자릿수에 해당하는 배열 번지에 1을 넣는다.
그 다음 나머지 부분의 숫자'num=이전num-(2의 n-1승)'를 위와 같은 식으로 돌린다. goto문을 안 쓰고 이중 포문을 쓸 수도 있지만, 설명의 용이성 때문에 (핑계가 좋다ㅋ) goto문을 썼다.
모든 자리수를 구하면 더 이상의 나머지 숫자가 없어지므로 레이블 TWO로 넘어가서 출력을 한다.
이상으로 이진수 변환 프로그램을 짜 보았다. 배열을 단순하게 사용하였으나, '출력의 용도로 배열을 쓸 수 있구나'라는 착안이 중요하다. 또한 진수 변환의 원리를 이해하여 이를 코드화 하는 것이 중요하다. 어렵게 느낀다면 조건문과 반복문의 사용 및 변수 초기화 부분일 것이다.
잘 보았다 싶으시면, 링크추가나 손가락을 눌러주세요ㅋㅋ
'C언어 업무보고' 카테고리의 다른 글
140328 도전4 회문 검사 프로그램:문자열 검사 (0) | 2014.03.28 |
---|---|
140328 05 도전3 정수입력과 배열 : 나머지 연산자, 배열의 순서 (0) | 2014.03.28 |
140328 03 도전1 배열 홀수출력, 짝수출력, 주소 포인터 (0) | 2014.03.28 |
140328 02 문제 14-2 const 선언에 대한 이해(포인터 상수) (0) | 2014.03.28 |
20140328 01 문제 14-1 값 참조와 주소 참조(call by value & call by reference) (0) | 2014.03.28 |