main.cpp

来自「利用栈的基本操作实现将任意一个十进制整数转化为R进制整数」· C++ 代码 · 共 55 行

CPP
55
字号

//功能: 利用栈的基本操作实现将任意一个十进制整数转化为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 + =
减小字号Ctrl + -
显示快捷键?