문제
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 |