数的进制
一、题目要求
- 题目描述
数在生活中有各种各样的表示法。时间的小时是24进制,时间的分是60进制,计算机内的数用二进制,我们平时用十进制。请你把一个十进制的数转成八进制和十六进制。 - 输入格式
输入有若干行,每行一个整数代表一个十进制数。数字范围在int以内。 - 输出格式
按要求的格式输出对应的八进制数和十六进制数。
如输入10时,输出格式是:10 = 12(8) = a(16)
输入负数时,只需要将其相反数转化成对应进制,输出时在前面添加负号即可。 - 输入样例
10
-2
99
100
-100 - 输出样例
10 = 12(8) = a(16)
-2 = -2(8) = -2(16)
99 = 143(8) = 63(16)
100 = 144(8) = 64(16)
-100 = -144(8) = -64(16)
二、完整代码
#include <iostream>
int a[1000];
char b[1000];
void eight(int m)
{
int i = 0;
if (m < 0)
{
m = -m;
}
while (m)
{
a[i] = m % 8;
m = m / 8;
i++;
}
for (int j = i - 1; j >= 0; j--)
{
std::cout << a[j];
}
}
void sixteen(int n)
{
int i = 0;
if (n < 0)
{
n = -n;
}
while (n)
{
b[i] = n % 16;
n = n / 16;
i++;
}
for (int j = i - 1; j >= 0; j--)
{
if (b[j] >= 10 && b[j] < 16)
{
b[j] = b[j] - 10 + 'a';
}
else
{
b[j] = b[j] + '0';
}
std::cout << b[j];
}
}
int main()
{
int n;
while (std::cin >> n)
{
if (n >= 0)
{
std::cout << n << " = ";
eight(n);
std::cout << "(8)" << " = ";
sixteen(n);
std::cout << "(16)" << std::endl;
}
else
{
std::cout << n << " = -";
eight(n);
std::cout << "(8)" << " = -";
sixteen(n);
std::cout << "(16)" << std::endl;
}
}
return 0;
}