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


    任务描述

    本关任务:基于栈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 **********/
    }
  • 相关阅读:
    3.30一周拾遗
    3.25周 一周拾遗
    自动加载以及Composer的实现
    MySQL 事务处理
    PHP代码实现3 [函数角度]
    PHP代码实现2 [从变量和数据的角度] 1
    PHP代码实现2 [从变量和数据的角度] 2
    vue 报错: [Vue warn]: Error in nextTick: "RangeError: Maximum call stack size exceeded" 很可能是你的name错了
    vue电商开发记录1—实现电商图片放大镜,移入放大效果
    vue图片点击放大预览v-viewer
  • 原文地址:https://www.cnblogs.com/xxxsans/p/13917608.html
Copyright © 2020-2023  润新知