문제

10진수를 입력 받아서 2, 8, 16진수로 바꾸어 출력하는 프로그램을 작성하시오.

 

입력형식

입력의 첫줄에는 10진수 N(1≤N≤100,000)과 바꿀 진수 B(2, 8, 16)가 공백으로 구분하여 입력된다.

16진수에서 10이상의 수는 순서대로 'A', 'B', 'C', 'D', 'E', 'F'로 나타낸다.

 

출력형식

입력받은 10진수를 B진수로 바꾸어 출력한다.

 

<코드>

#include <stdio.h>

void itob(int N)
{
	int arr[20] = {0, };
	int i=0;
	
	while(1)
	{
		if(N<2)
		{
			arr[i] = N;
			break;
		}
		
		arr[i] = N%2;
		N /= 2;
		i++;	
	}
	
	for(; i>=0; i--)
		printf("%d", arr[i]);
}

void itoo(int N)
{
	int arr[20] = {0, };
	int i=0;
	
	while(1)
	{
		if(N<8)
		{
			arr[i] = N;
			break;
		}

		
		arr[i] = N%8;
		N /= 8;
		i++;
	}
	
	for(; i>=0; i--)
		printf("%d", arr[i]);
}

char convert(int N)
{
	if(N<10)
		return N+0x30;
	else
		return N+0x37;
}

void itoh(int N)
{
	char arr[20] = {0, };
	int i=0;
	
	while(1)
	{
		if(N<16)
		{
			arr[i] = convert(N);
			break;
		}

		arr[i] = convert(N%16);
		N /= 16;
		i++;
	}
	
	for(; i>=0; i--)
		printf("%c", arr[i]);
}

int main()
{
	int N, B;
	
	scanf("%d %d", &N, &B);
	
	switch(B)
	{
		case 2:
			itob(N);
			break;
		case 8:
			itoo(N);
			break;
		case 16:
			itoh(N);
			break;
	}
	
	return 0;
}

'코딩 > Beginner Coder' 카테고리의 다른 글

2604 : 그릇  (0) 2020.06.03
3106 : 진법 변환  (0) 2020.06.02
2814 : 이진수  (0) 2020.05.30
2813 : 소수의 개수  (0) 2020.05.29
1901 : 소수 구하기  (0) 2020.05.29

+ Recent posts