栈的应用:数制转换

【数据结构 C描述】使用顺序栈编制一个满足下列要求的程序:对于输入的任意一个非负十进制数,打印输出与其等值的二进制数。 【数据结构 C描述】使用顺序栈编制一个满足下列要求的程序:对于输入的任意一个非负十进制数,打印输出与其等值的二进制数。 //main.cpp #include <iostream> #include <malloc.h> #include <stdlib.h> #include "SqStack.h" using namespac 阅读详情
数制转换:
十进制数N和其它d进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一种简单方法基于以下原理.
N=(N div d)*d+N mod d (其中:div为整除运算,mod 为求余运算.)
例如:10进制数1348转换为8进制为:2504.其运算过程如下:
N N div d N mod d
1348 168 4
168 21 0
21 2 5
2 0 2
假设现要编制一个满足下列要求的程序:对于输入的任意一个非负十进制整数,打印输出与其相等的八进制数,由于上述计算过程是从低位到高位顺序产生八进制数的各个位数,而打印输出,一般来说应从高位到低位进行,恰好和计算过程相反.因此,若将计算过程中得到的八进制数的各位顺序进栈,则按出栈序列打印输出的即为与输入对应的八进制数.

算法描述如下:

void conversion()
{
InitStack(s);
scanf(" %d",N);
 while(N)
{
 push(s,n%8)
 N=N/8;
}
while(!StackEmpty(s))
{
Pop(S,e);
printf("%d",e);
}
}


这个是利用栈的先进后出特性的最简单的例子.在这个例子中,栈操作的序列是直线式的,即先一味地进栈,然后一味的出栈.也许有人会提出疑问:用数组直接实现不也很简单吗?仔细分析上述算法不难看出,栈的引入简化了程序设计的问题,划分了不同的关注层次,使思考的范围缩小了.而用数组不仅掩盖了问题的本质,还要分散精力去考虑数组下标增减等细节.
完整代码实现:

#include<iostream>
#include<stack>
using namespace std;
void change(int n,int d)
{
	stack<int>s;
	int temp;
	int i=0;
	if(n<d)
	{
		cout<<n<<endl;
	}
	else
	{
 
		while(n)
		{
			temp=n%d;
			s.push(temp);
			n=n/d;
		}
		while(!s.empty())
		{
			temp=s.top();
			cout<<temp;
			s.pop();
		}
		cout<<endl;
	}
 
}
void main()
{
	int x,y;
	cout<<"请输入你要转换的数字"<<endl;
	cin>>x;
	cout<<"请输入你要转换的进制"<<endl;
	cin>>y;
	change(x,y);
}

递归实现十进制转换为八进制:
/*
  Name: conversion.cpp
  Copyright: www.52coder.net    
  Author: HeHe.wang
  Date: 16-06-12 13:03
  Description: 
*/
 
#include <iostream>
using namespace std;
 
void conversion(int N,int d)
{
      int temp=N%d;
      N=N/d;
      if(N==0)
      cout<<temp;
      else
      {
       conversion(N,d); 
       cout<<N%d;
      }
 
}
int main()
{
    conversion(7,2);
    system("pause");
}
文章出自:我爱程序员 http://www.52coder.net/archives/1039.html 版权所有.本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源.


算法:数制转换(栈的应用)-数据结构(6) 一、算法描述 将一个数按照想要的进制,进行转换。用到的栈的原因是,计算出来的数是从第一位开始的,为了方便输出,进行的栈的运用。其实就是逆序输出P48 二、数据结构与算法 1、数据结构(栈) #define STACK_INIT_SIZE 100//存储空间初始分配量 #define STACKINCREMENT 10//存储空间分配增量 typedef struct{ SElemType 阅读详情

相关推荐

Vue3实战:从零构建ElementPlus后台管理系统全流程

本文详细介绍了从零开始使用Vue3和ElementPlus构建后台管理系统的全流程。内容涵盖环境准备、项目初始化、Vite配置、SCSS样式体系搭建、ElementPlus组件库引入与配置,以及封装可复用的SvgIcon组件进行图标管理,旨在帮助开发者快速搭建现代化、可维护的中后台应用。

weixin_29011239的博客 160

实验二:8585 栈的应用——进制转换

时间限制:1000MS 代码长度限制:10KB提交次数:2572 通过次数:1925题型: 编程题 语言: G++

Y_Jiay的博客 335

新手必看:5分钟搞定Unitree Go1机器狗Gazebo仿真运动控制(附按键图解)

本文为新手提供了Unitree Go1机器狗在Gazebo仿真环境中实现运动控制的快速指南。通过5分钟极简配置和按键图解,帮助开发者快速掌握宇树科技明星产品的基础操作,包括环境搭建、仿真启动和运动控制技巧,适合零基础用户快速上手。

weixin_42550597的博客 300

数据结构(9):栈的数制转换的实现

问题描述 编制一个满足下列要求的程序: 对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数。由于上述计算过程是低位到高位顺序产生八进制数的各个数位,而打印输出,一般来说应从高位到低位进行,恰好和计算过程相反。 代码实现 #include<stdio.h> #include<stdlib.h> #include<string.h> #define OK ...

欢迎来到关关雎鸠儿的博客 649

SAP 运费处理方式

从直接的处理方式上看,情况1/2/3可以将运费记账到物料成本中,但情况4/5/6是直接记账到成本对象中,具体是要体现在损益表中,还是要结转到物料成本中,可依据业务要求进行好处理。如果体现在损益表中,不需要多过多额外的操作,如果要体现在物料成本中心,则需要再进行一系列的处理,最终将金额结转到物料成本中。因为在创建采购订单时不知道具体运费,可以不维护运费,只需要维护材料价格。:创建采购订单时,运费是由供应商承担,很多时候是包含在材料报价中,这种情况不需要专门针对运费进行处理,材料价格中已包含运费。

weixin_44506537的博客 3371

LTR-390UV-01对比VEML6075:5个真实项目中的选型避坑指南

本文对比了LTR-390UV-01和VEML6075两款环境光传感器在5个真实项目中的表现,提供了选型避坑指南。通过智能手环、农业温室、紫外线消毒柜等场景的实测数据,分析了动态范围、抗干扰性、温度稳定性等关键差异,帮助开发者在成本与性能间做出最优选择。

weixin_28733777的博客 220

SCAU 数据结构 8585 栈的应用——进制转换(STL)

进制转换

m0_62122789的博客 524

AI脸部替换Roop-Unleashed,一键整合包教程

Roop-Unleashed是一个无须训练模型的深度伪造工具,专为图像和视频的面部替换而设计。它通过简洁的浏览器界面提供用户友好且跨平台的使用体验,无论用户是业余爱好者还是专业人士,都能快速上手。它无需复杂的设置即可实现高效的处理和转换,使图像和视频的编辑变得更加轻松和便捷。

m0_72580657的博客 1万+

栈的知识点总结(顺序栈和链栈)——应用:数制转换

目录 一、栈的逻辑结构 1.栈定义 2.栈与线性表的区别与联系 3.栈的相关运算 4.要对栈状态进行标示,仅需要一个参数即可。 二、顺序栈 1.顺序栈数据结构 2.顺序栈初始化 3.判断栈空和栈满 4.压栈 5.弹栈 6.取栈顶元素 7.顺序栈进行数制转换,实现10进制转8进制 三、链栈 1.链栈数据结构定义 2.初始化 3.判断栈空 4.压栈 5.弹栈 6...

一丁的博客 5015

Bootloader详解,理解Bootloader看这篇就够了

这里写目录标题一、Bootloader作用(目的)二、完成Boot最终目的的前提条件三、对前提条件的详细说明3.1、对前提条件(1)的说明:3.2、对前提条件(2)的说明:3.3、对前提条件(3)的说明:3.4、对前提条件(4)的说明:3.4、对前提条件(5)的说明:四、loader是干啥的 一、Bootloader作用(目的) Bootloader=Boot + loader Boot的目的: 最终目的:跳到C语言中;为了C语言运行程序会进行一系列的初始化,系统一上电后如何通过一系列的设置让软件程序员

iduuigdg的博客 11万+

物联网系列③——基于ESP8266与点灯科技平台的温湿度计设计(接入小爱同学)

物联网系列③——基于ESP8266与点灯科技平台的温湿度计设计(接入小爱同学)一、设计目标二、电路展示三、存在的问题四、代码五、需要注意的问题 一、设计目标       前一阵子偶然接触到点灯科技平台,产生了制作一块ESP8266电路板,拥有以下功能: 使用CH340对ESP8266进行程序下载 使用DHT11进行温湿度数据读取 使用点灯科技平台接入物联网,可通过手机APP获得室内温湿度 接入小爱同学,通过语音获取室内温湿度信息 Mico US

weixin_43278295的博客 8853

数据结构 -> 栈 及栈的应用:数制转换

栈(stack) 是限定仅在表尾进行插入或删除操作的线性表。因此,对栈来说,表尾端有其特殊的含义,称为栈顶(top),相应地,表头端称为栈底(bottom)。不含元素的空表称为空栈。 定义: 定义和线性表一样; #include<iostream> using namespace std; typedef int* date; #define Size 1 typedef struct link { date elem = NULL; int legth = 0; ..

MeOutsider的博客 961

❤️爆肝十二万字《python从零到精通教程》,从零教你变大佬❤️(建议收藏)

文章目录强烈推荐系列教程,建议学起来!!一.pycharm下载安装二.python下载安装三.pycharm上配置python四.配置镜像源让你下载嗖嗖的快4.1pycharm内部配置4.2手动添加镜像源4.3永久配置镜像源五.插件安装(比如汉化?)5.1自动补码神器第一款5.2汉化pycharm5.3其它插件六.美女背景七.自定义脚本开头八、这个前言一定要看九、python入门十、python缩进十一、Python注释1.单行注释2.多行注释十二、Python 变量1.变量定义理解2. 变量名命名3. 分

全栈川川 26万+

数据结构:栈的应用。算法解析-栈应用数制的转换

栈 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 特点:栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最

阿杜的博客 769

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

数据结构栈的应用:数制转换

内容:数据结构第三章:栈的应用 参考书:数据结构严书,高一凡数据结构与算法 测试软件:Visual Studio 2017 原理解释:将十进制转换成其它进制 整数情况:(基数除法) 把要转换的十进制数除以新的进制的基数,把余数作为新进制的最低位; 把上一次得的商在除以新的进制基数,把余数作为新进制的次低位; 继续上一步,直到最后的商为零,这时的余数就是新进制的最高位。 整个过程正好与栈的入栈、出栈...

GaodadaMaster的博客 658

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

数据结构 04-栈的应用:数制转换的代码实现

2. 应用场景:数制转换 十进制转换为N进制,“除以N”的过程,得到的余数是从低到高的次序,而输出则是从高到低,所以需要一个栈来反转次序。

一分耕耘一分收获 1463

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

《数据结构》—— 关于栈的应用:数制的转换

十进制转为八进制,用链栈实现,链栈的基本操作不变,定义一个算法调用即可。

博樽 544

栈的应用1:数制转换

栈的应用1: 1 #include <iostream> 2 #include <malloc.h> 3 #include <conio.h> 4 #include <stdio.h> 5 6 using namespace std; 7 8 #define STACK_INT_SIZE 100 9 ...

weixin_30475039的博客 107

栈的应用举例:数制转换,表达式求值

以下代码由C编写,VS调试:#include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define OVERFLOW -2 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef char SElemType; typedef

歌神的卖的专栏 1129

7月21日:栈的应用1<数制转换>

匆匆忙忙,才开始做昨天的总结,原因无它,生活无规律,自己还没有适应过来。        首先,今天自己做的是“栈”的应用,如:数制转换,后缀式的运用… …        那么现在,我就来谈谈,数制的转换。       数制转换多为十进制转m进制(2        其思想主要为用十进制数字N,去除以m,然后取其余数,并保存,反复处理直到N为0,主要代码如下: /*除法取其余数存

刷题的那些日子 377

数据结构:栈的应用(数制转换)

数据结构:栈的应用(数制转换)以十进制转二进制为例

m0_64257657的博客 323

栈的简单应用:数制转换·括号的匹配检验·行编辑·迷宫求解·表达式求值·递归调用

ps:所用代码为伪代码 1.数制转换(10进制→8进制) 问题本身(保留数据)就有后进先出的特点,所以用栈;抓住本质选择算法,这若使用数组则是很复杂了 void conversion(){ InitStack(S); scanf(N); while(N){ Push(S,N%8,); N/=8; } while(!StackEmpty){ Pop(S,e); printf...

111辄的博客 725

复习八:栈的应用——数制转换、括号匹配的检验

假设表达式中允许出现包含两种括号:()[],其嵌套顺序随意,设计一个算法检验括号是否匹配。1、十进制N和其他d进制数转换。

yyy_zxc的博客 478

数据结构(C语言)读书笔记5:栈的应用之数制转换及C语言代码实现

十进制数N转换成其他d进制数的转换是计算机实现计算的基本问题,解决方法很多,其中一个简单算法基于如下原理:N=(N div d)*d +N mod d ,主要涉及到进栈和出栈。 算法描述://十进制转换成其他进制  void coversion () { int N,e,d;//十进制N转换成d进制数 InitStack(&S);//构造空栈 scanf(“%d”,&N); wh

彬彬有礼 3135
上一篇: “火柴棍式”程序员面试题
下一篇: 2012年好耶集团C/C++校园招聘试题
52coder
博客等级 码龄17年 87粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值