设计算法把10进制整数转换为二至九进制之间的任意进制输出。用C++,用类模板
时间: 2024-09-29 13:13:57 浏览: 38
在C++中,你可以使用类模板来创建一个通用的转换函数,将十进制整数转换成任意进制(2到9之间)。这里是一个简单的例子:
```cpp
#include <iostream>
#include <string>
// 类模板,用于将整数转换为指定基数的字符串
template<unsigned Base>
class IntToBase {
private:
std::string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 十进制到目标进制的字符映射
public:
std::string convert(int num) {
if (num == 0) return "0";
std::string result;
while (num > 0) {
result = digits[num % Base] + result; // 取余并添加到结果前
num /= Base;
}
return result;
}
static void print(int num, int base) {
std::cout << "Number in base " << base << ": " << convert(num) << std::endl;
}
};
int main() {
// 示例:转换100到任意进制
IntToBase<2>::print(100, 2); // 输出二进制形式
IntToBase<3>::print(100, 3); // 输出三进制形式
IntToBase<9>::print(100, 9); // 输出九进制形式
return 0;
}
```
在这个例子中,`IntToBase`类模板接受一个基础值(Base),然后通过取模运算和除法操作逐步分解输入的十进制数,将其转换为目标进制的表示。`convert`函数负责实际的转换,`print`函数则是用来打印转换后的结果。
阅读全文