利用栈实现把十进制数转换为二进制至十六进制之间的任一进制数并输出的功能。

  • 【实验题目内容】
  • 【实验环境】(使用的软件):VS - 2010
  • 【项目设计源代码】
  • 【项目测试运行结果截图】

【实验题目内容】

利用栈实现把十进制数转换为二进制至十六进制之间的任一进制数并输出的功能。

【实验环境】(使用的软件):VS - 2010

【项目设计源代码】

//stdafx.h头文件即所需的头文件
#include <iostream>using namespace std;
// linkNode.h单链表的结点类模板头文件
#pragma once
// 单链表的结点
// T为单链表中元素的模板类型
template <class T>
class linkNode
{public:// 构造结点linkNode(void);// 析构结点~linkNode(void);// 元素T data;// 后继指针linkNode<T>* next;
};// 构造结点
template <class T>
linkNode<T>::linkNode(void)
{}// 析构结点
template <class T>
linkNode<T>::~linkNode(void)
{}
// LinkStack.h链栈类模板头文件
#pragma once
#include "linkNode.h"
// 链栈类模板
// T为链栈中元素的模板类型
template <class T>
class LinkStack
{public:// 默认构造函数LinkStack(void);// 析构函数~LinkStack(void);
protected:// 栈顶指针linkNode<T>* top;
public:// 遍历输出链栈void Print(void);// 判断栈是否为空bool IsEmpty(void) const;// 新元素newData进栈顶,进栈成功,// 则返回ture,否则,返回falsebool Push(T newData);// 取栈顶元素topData,取栈顶元素成功,// 则返回true,否则,返回falsebool GetTop(T& topData);// 栈顶元素topData出栈,栈顶元素出栈成功,// 则返回true,否则,返回falsebool Pop(T& topData);
};// 默认构造函数
template <class T>
LinkStack<T>::LinkStack(void)
{// 空链栈的栈顶为空top = NULL;
}// 析构造函数
template <class T>
LinkStack<T>::~LinkStack(void)
{linkNode<T>* deleteNode,*current=top;while(current){deleteNode=current;current=current->next;delete deleteNode;}top=NULL;
}// 遍历输出链栈
template <class T>
void LinkStack<T>::Print(void)
{cout<<"top→";linkNode<T>* current=top;while(current!=NULL){cout<<"["<<current->data<<"]";current=current->next;if(current!=NULL){cout<<"[-]→";}}cout<<"[^]"<<endl;
}// 判断栈是否为空
template <class T>
bool LinkStack<T>::IsEmpty(void) const
{return top==NULL;
}// 新元素newData进栈顶,进栈成功,
// 则返回ture,否则,返回false
template <class T>
bool LinkStack<T>::Push(T newData)
{// 动态分配新元素linkNode<T>* newNode = new linkNode<T>;if(newNode==NULL){// 内存分配失败cerr<<"内存分配失败。"<<endl;return false;}// 新元素的数据域更新为newDatanewNode->data = newData;// 原栈顶元素作为新元素的后继newNode->next = top;// 新元素成为新栈顶元素top=newNode;// 新元素进栈成功,返回truereturn true;
}// 取栈顶元素topData,取栈顶元素成功,
// 则返回true,否则,返回false
template <class T>
bool LinkStack<T>::GetTop(T& topData)
{if(IsEmpty()){// 栈空,无任何元素return false;}// 栈顶元素通过引用形参topData返回topData = top->data;// 取栈顶元素成功,返回truereturn true;
}// 栈顶元素topData出栈,栈顶元素出栈成功,
// 则返回true,否则,返回false
template <class T>
bool LinkStack<T>::Pop(T& topData)
{if(IsEmpty()){// 栈空,无栈何元素return false;}// 栈顶元素通过引用形参topData返回topData = top->data;// 保存原栈顶指针linkNode<T>* oldTop = top;// 栈顶指针后移1个元素top = top->next;// 释放原顶元素的空间delete oldTop;// 栈顶顶元素出栈成功,返回truereturn true;
}
#include "stdafx.h"
#include "LinkStack.h"int _tmain(int argc, _TCHAR* argv[])
{system("color F0");LinkStack<int> linkStack;   //创建链栈int num, base;    //十进制数和其需要转换的进制cout << "输入一个十进制数:";cin >> num;cout << "输入你需要转换的进制数:";cin >> base;while(!(base == 2 || base == 8 || base == 16)) //确保输入的进制输入正确{cout << "输入进制错误,请重新输入:";cin >> base;}int q = -1; //商int r;   //余数int topData; //接收栈顶元素while(q != 0) //进栈{r = num % base;linkStack.Push(r);q = num / base;num = q;topData = r;}cout << "转换成" << base << "进制数为:";while(linkStack.Pop(topData)){//如果获取的data大于十,说明是十六进制数,要把数转换成字母if (topData >= 10) {switch (topData){case 10:cout << "A";break;case 11:cout << "B";break;case 12:cout << "C";break;case 13:cout << "D";break;case 14:cout << "E";break;case 15:cout << "F";break;default:break;}}else {cout << topData;}}cout << endl;return 0;
}

【项目测试运行结果截图】

  1. 十进制转二进制
  2. 十进制转八进制
  3. 十进制转十六进制
  4. 进制纠错

备注:各位小可爱们如果有任何的疑问可以在评论区留下你的思考,大家一起进步 yo~*

利用栈实现把十进制数转换为二进制至十六进制之间的任一进制数并输出的功能。相关推荐

  1. 利用栈实现把十进制数转换为二进制至十六进制之间的任一进制数并输出的功能。(第二版)

    [实验题目内容] 保持计算机默认的十进制不变(要求不用C++流操纵符转换基数为八进制形式oct,不用C++流操纵符转换基数为十六进制形式hex,也不用setbase(base)函数将基数设置为base ...

  2. 第E题 转换任意进制 (java方法直接解)==输入一个十进制数N,将它转换成R进制数输出

    输入一个十进制数N,将它转换成R进制数输出. Input 输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10). Outpu ...

  3. 十六进制190的2进制数_十六进制数系统解释

    十六进制190的2进制数 Hexadecimal numbers, often shortened to "hex numbers" or "hex", are ...

  4. 输入一个十进制数N,将它转化为R进制数输出(C语言版)

    我们先拿十进制转化为二进制来举例: 我在b站上学习到十进制转为二进制的算法为: 比如:十进制9转化为二进制的步骤为 根据思路代码为: #define _CRT_SECURE_NO_WARNINGS # ...

  5. qt 中文转十六进制_QT中10进制数转换为16进制数的代码怎么写?

    展开全部 //将十六进制"10"转换为e68a8462616964757a686964616f31333365633931十进制i: int i = Convert.ToInt32 ...

  6. 进制数及其转换(二进制,十进制,十六进制)

    数值数据是表示数量大小的数据,有多种表示方法.日常生活中一般采用十进制数进行计数和计算,但十进制数难以在计算机内直接存储与运算.在计算机系统中,通常将十进制数作为人机交互的媒介,而数据则以二进制数的形 ...

  7. m进制数转换为十进制数

    m进制数(m<10)转换为十进制数 问题描述:将一个m进制数转换成十进制数字 问题分析:首先将输入的m进制数存储到列表里面,然后根据每个数位上的权值(幂次)的不同,计算出对应的十进制数. 代码如 ...

  8. 给定一个十进制数,将其转化为N进制数-----17年滴滴笔试题

    题目:给定一个十进制数M,将其转化为N进制数,其中2<=N<=16,其中N为32为整型数; 输入:M N,如7 2 输出转化结果:111 注意点:考虑负数的情况,记得添加负号(其实直接添加 ...

  9. 将字符串转为16进制数_C语言中的进制互转与数值和字符串互转的混搭玩法

    点击上方公众号名称关注,获得更多内容 ✎ 编 者 悟 语 很多事根本就没有那么多的前提可言,想做事,就不要把先决条件看得过重. 文 章 导 读 今天给小伙伴们介绍下了下进制转换和字符串与数值互转的方法 ...

最新文章

  1. not enough actual parameters for macro 'min'(QT与vs2010)
  2. 一款基于jquery带百分比的响应式进度加载条
  3. 2-修改软件源让pip下载更快
  4. Nginx 502 Bad Gateway 错误的原因及解决方法
  5. Path Sum I, II
  6. 需求、需求工程与需求工程师 — 2.需求的来源
  7. mysql查询单表的销售额_MYsql数据库单表百万数据量查询
  8. WPF窗体的生命周期
  9. vue.js2.0 java_详解vite2.0配置学习(typescript版本)
  10. np合并 python_Python办公自动化自动更新不对称表格
  11. 波士顿房价数据集——随机森林
  12. 多功能工具箱微信小程序源码
  13. python实现整数反转
  14. 实用常识 | 写论文时如何引用插入脚注 / 如何自定义脚注符号 / 如何将多个脚注合并在一起
  15. MySQL数据库简介
  16. ubuntu12.04双屏拼接
  17. C# 公历日期时间转农历日期方法 注解解读
  18. 区块链知识点杂记(并不全面)
  19. matlab中:错误使用 handle.handle/set 对象无效或已删除
  20. 营业执照识别/发票识别在供应链与物流智能移动解决方案

热门文章

  1. 中国支付清算协会提倡:第三方支付行业者避免使用ChatGPT
  2. 计算机专业求职信英语,计算机专业的英语求职信
  3. 详解AI芯片和传统芯片的差别,到底在那里?
  4. 因為落葉,懂得了珍惜
  5. Microsoft Excel 2019 Mac中文版v16.26
  6. 年薪百万的3D建模师真的存在吗?总结了一些实现百万年薪的必要条件
  7. 此生不戒多巴胺-冲刺日志(第一天)
  8. 智慧农贸市场管理系统
  9. 如果有来世,渡我,可愿?
  10. pci桥 透明 非透明模式 区别