利用栈实现整数的十进制转八进制


任务描述

本关任务:基于栈stack数据结构解决整数十进制转八进制的问题。

相关知识

栈是基础的数据结构,元素操作遵循后进先出的原理。本关卡基于数组存储实现了栈的基本操作。

C++ STL中提供了栈结构的实现 1、c++ stl栈stack的头文件为:#include <stack> 2、c++ stl栈stack的成员函数介绍 top():返回一个栈顶元素的引用,类型为 T&。如果栈为空,返回值未定义。 push(const T& obj):可以将对象副本压入栈顶。 push(T&& obj):以移动对象的方式将对象压入栈顶。 pop():弹出栈顶元素。 size():返回栈中元素的个数。 empty():在栈中没有元素的情况下返回 true。 emplace():用传入的参数调用构造函数,在栈顶生成对象。 swap(stack<T> & other_stack):将当前栈中的元素和参数中的元素交换。参数所包含元素的类型必须和当前栈的相同。 , 例:以下代码实现了,输入5个元素,并逆序输出。

  1. // stack::push/pop
  2. #include <iostream>
  3. #include <stack>
  4. using namespace std;
  5. int main ()
  6. {
  7. stack<int> mystack; //声明元素类型为int类型的栈
  8. for (int i=0; i<5; ++i)
  9. mystack.push(i); //压栈
  10. cout << "Popping out elements...";
  11. while (!mystack.empty()) //判断栈是否为空
  12. {
  13. cout << " " << mystack.top(); //读栈顶元素
  14. mystack.pop(); //弹栈
  15. }
  16. cout << endl;
  17. return 0;
  18. }

为了完成本关任务,你需要掌握:1.如何创建一个栈,2.入栈、出栈操作,3.进制转换。

进制转换

K取余法,例如十进制数10转二进制: 上图可得:K=2,1010=10102 即:10=1×23+0×22+1×21+0×20

编程要求

本关的编程任务是补全右侧代码片段Decimal_Conversion_OctalBeginEnd中间的代码,具体要求如下:

  • Decimal_Conversion_Octal中,利用栈stack的基本操作实现整数的十进制转八进制,并输出八进制结果,末尾换行。

输入输出说明

输入十进制数n(n为绝对值不超过10000的整数),输出n对应的八进制数。

样例一: 测试输入:71 预期输出:107

样例二: 测试输入:8 预期输出:10

 

//输入10进制数,转换为8进制数输出
#include <iostream>
#include<stack>
using namespace std;

int main() { 

    // 请在这里补充代码,完成本关任务
    /********** Begin *********/
    int num;
    while(~scanf("%d",&num)){
        if(num==0)cout<<'0'<<endl;
        stack<int>v;
        while(num){
            v.push(num%8);
            num/=8;
        }
        while(!v.empty()){
            cout<<v.top();
            v.pop();
        }
    }
    /********** End **********/
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM