描述十进制整数N和其他DD的值为2、8、16进制数的转换是计算机实现计算的基本问题其解决方法很多其中一个简单算法基于下列原理:N = N div d×d + N mod d 其中:div 为整除运算mod 为求余运算。简单来说就是除D取余然后倒过来得到D进制的数。例如:134810 = 101010001002134810 = 25048100010 = 3E816请注意:转16进制时用A代表余数
#include <iostream>
#include <stack>
#include <vector>
using namespace std;
// 将十进制数转换为D进制数
string convertToBase(int N, int D) {
stack<char> s;
while (N != 0) {
int remainder = N % D;
if (remainder < 10) {
s.push(remainder + '0');
} else {
s.push(remainder - 10 + 'A');
}
N /= D;
}
string result;
while (!s.empty()) {
result += s.top();
s.pop();
}
return result;
}
int main() {
int N, D;
cin >> N >> D;
string result = convertToBase(N, D);
cout << result << endl;
return 0;
}
该程序先定义了一个convertToBase函数,用来将十进制数N转换为D进制数。在函数内部,使用一个栈stack来保存转换后的结果,然后将栈中的元素依次弹出,组合成字符串result。最后,将得到的result输出。
在main函数中,首先读取输入的十进制数N和进制数D,然后调用convertToBase函数将十进制数转换为D进制数,最后输出结果。
原文地址: https://www.cveoy.top/t/topic/jab1 著作权归作者所有。请勿转载和采集!