题目链接:十进制到六进制
总时间限制: 1000ms
内存限制: 65536kB
描述
进制转换: 将十进制(不超过int类型表示的范围)的数转换为六进制的数.
输入
输入为第一行是组数n,后面n行是需要进制转换的十进制数.
输出
进制转换后的n行六进制数。
样例输入
3
13
46
265
样例输出
21
114
1121
来源
cs10107 C++ Final Exam
问题分析:
读入十进制数,利用进制转换原理,把转换后的六进制数以字符串形式存入数组,再输出。
不用数组直接转换的话位数好像不够
C语言程序如下:
(使用数组)
#include <iostream>
#include <cstdio>
using namespace std;
const int N = 32;
char s[N];
int main(void)
{
int n, a, i;
cin >> n;
while(n--) {
cin >> a;
if(a == 0)
cout << "0" << endl;
else {
if(a < 0) {
a = -a;
cout << '-';
}
i = 0;
while(a) {
s[i++] = '0' + a % 6;
a /= 6;
}
while(i > 0)
putchar(s[--i]);
putchar('\n');
}
}
return 0;
}
(直接转换)
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int convert(int n, int base){
int digit=0;
int power=1;
while(n){
digit += power * (n%base);
n /= base;
power *= 10;
}
return digit;
}
int main(void)
{
int n, num;
cin >> n;
while(n--){
cin >> num;
cout << convert(num, 6) << endl;
}
return 0;
}