我是靠谱客的博主 危机手链,最近开发中收集的这篇文章主要介绍基于栈的十以内进制的任意转换题目解题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目

设计算法把一个十进制整数转换为二至九进制之间的任意进制的数输出

解题

进制转换使用数据结构“栈”来实现是适合的,最先得出的余数反而要是位数最小的(即最后输出),符合栈的特点。

代码如下:

// Stack.h 栈的实现
#include <iostream>
using namespace std;
class Stack
{
private:
int maxSize;
int top;
int * ptr;
public:
Stack(int maxSize_)
{
maxSize = maxSize_;
top = -1;
ptr = new int[maxSize_];
}
~Stack()
{
delete [] ptr;
}
bool Push(const int item)
{
if (top == maxSize - 1)
{
cout << " The Stack is already full!" << endl;
return false;
}
ptr[++top] = item;
return true;
}
bool Pop(int & item)
{
if (top == -1)
{
cout << " The Stack is already empty!" << endl;
return false;
}
item = ptr[top--];
return true;
}
};
//Transform.h 转换函数
#include <iostream>
#include "Stack.h"
using namespace std;
void transform(int number, int index)
{
// 很难超过20位吧
Stack stack = Stack(20);
// 存入
do
{
stack.Push(number % index);
number /= index;
} while (number);
// 取出
int item;
while (stack.Pop(item))
{
cout << item;
}
}
// main.cpp 主函数
#include <iostream>
#include "Transform.h"
#include <stdio.h>
using namespace std;
int main()
{
int number, index;
cout << "Please input the numbers:" << endl;
cin >> number >> index;
transform(number, index);
// 我用的编译器是VS Code + GCC,必须用getchar()停一下,要不然终端“一闪而过”
getchar();
getchar();
return 0;
}

 

最后

以上就是危机手链为你收集整理的基于栈的十以内进制的任意转换题目解题的全部内容,希望文章能够帮你解决基于栈的十以内进制的任意转换题目解题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部