69,336
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
class stack {
private:
int maxsize;
int top;
int* st2;
public:
~stack()
{
delete[]st2;
}
stack(int size)
{
maxsize = size;
st2 = new int[maxsize];
top = -1;
}
void push(int num)
{
st2[++top] = num;
}
void pop()
{
int item;
while (top != -1) {
item = st2[top--];
cout << item;
}
}
};
/*
TODO:设计算法把一个十进制整数转换为二至九进制之间的任意进制数输出。
其中,n为要转换的10进制整数, m为进制,取值为2到9。
提示:利用栈解决
*/
void Binaryconv(int n, int m) //进制转换
{
stack s(32);
int a = n, b = 0;
while (a > 0)
{
a = n;
b = a % m;
a = a / m;
s.push(b);
}
cout << "整数" << n << "转成" << m << "进制后的结果是:";
s.pop();
}
int main()
{
int n, m;
cin >> n;
cin >> m;
Binaryconv(n, m);
return 0;
}
while (a > 0)
{
a = n; //这条语句为什么要在这里赋值,在while外已经赋值了。因为n没有做修改,因此每次a都会被赋值初始值,这样就会导致死循环。
b = a % m;
a = a / m;
s.push(b);
}