📄 main.cpp
字号:
//功能: 利用栈的基本操作实现将任意一个十进制整数转化为R进制整数
#include <iostream>
#include <stack> //使用STL提供的 stack 类
#include <string>
using namespace std;
//以基数b输出整数num,
string output(int num, int b);
int main()
{
int num,b;
//提示输入>=0的数字和基数,基数范围是2<=B<=16
cout<<"输入数字与基数"<<"(2<=基数<=16)"<<endl<<"或者 0 0 结束:";
cin>> num >> b;
//循环,直到用户输入基数0
while (b!=0)
{
cout<<""<<num<<"转化"<<b<<"进制是"<<output(num,b)<<endl;
cout<<"输入数字与基数"<<"(2<=基数<=16)"<<endl<<"或者 0 0 结束:";
cin>> num >> b;
}
return 0;
}
//使用栈的LIFO特性,以字符形式顺序存储余数,把数字出栈到字符串numStr中,直到栈为空
string output(int num, int b)
{
//string digitChar是表示数字digit的字符,0<=digit<=15
string digitChar ="0123456789ABCDEF", numStr="";
//栈容纳num在基数下各个数位的数字
stack<char> stk;
do
{
//将最右边的数字入栈
stk.push(digitChar[num%b]);
num /=b; //从num中删除最右边的数字
}
while (num !=0); //循环,直到找到所有数字
while (!stk.empty())//清栈
{
numStr += stk.top();//将栈顶的数字附加到字符串
stk.pop(); //出栈
}
return numStr;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -