十进制转换成二进制 (栈)
十进制转换成二进制 (栈)
首先,转化的思路是 辗转取余法。比如说n = 5,先取模(5%2)获得1,然后取余并将其赋值给本身,得到n = 2;再取模得到0,取余之后n = 1;对1取模(1%2)得到1,取余得到0。将取模得到的数压入栈,这个数组是{1,0,1},然后用pop(),top()输出栈中的值。(因为结果需要翻转)
如图,左边一列则是要进入栈中的对2取模得到的结果,右边一列则是不断取余并赋值给本身的n的值,可以清晰地看出左边一列入栈的数组在输出时应该从下往上输出,即数组的反转,这一特点正符合了栈“后进先出”的特点。
用C++中的栈写的
#include<iostream>
#include<stack>
using namespace std;
void change(int n)
{stack <int> a;while(n) //只要n取余没有到0,则一直进行{int b=n%2; //对n取模a.push(b); //将取模获得的值压入栈n=n/2; //对n取余并复制给其本身}//接下来是出栈操作,即 将入栈的数据倒序输出while(a.size()) //判断栈不为空{int c = a.top(); //获取栈顶元素,即数组的最后一个元素a.pop(); //将栈顶值出栈// pop()函数的返回值是void 类型,不能直接获取cout<<c;}
}
int main()
{int n;while(cin>>n){change(n);cout<<endl;}return 0;
}
介绍一下栈的几个函数;
stack <int> s;
s.empty(); //判断栈是否为空,返回值是 true / false
s.push(1); //将括号里的值压入栈中
cout<<s.top()<<endl; //栈顶值为 1
s.push(20);
s.push(300);
cout<<s.top()<<endl; //现在栈顶值为 300
s.pop(); //栈顶出栈
cout<<s.top()<<endl; //现在栈顶值为20
cout<<s.size()<<endl; //数组长度 2
十进制转换成二进制 (栈)相关推荐
- 算法设计-利用栈把十进制转换成二进制
十进制转换成二进制 void conversion(){ InitStack(S); scanf("%d",n); while(N){ Push(S,n%2) n=n/2; } w ...
- c语言十进制转换成二进制八进制十六进制,十进制数转换成二进制,八进制,十六进制(c语言)...
利用一个函数实现十进制数转换成二进制,八进制,十六进制.利用的是栈的后进先出的思想.算法简单. #include #include #include #define STACK_INIT_SIZE 1 ...
- C语言十进制转换成二进制源码
把开发过程比较重要的一些内容备份一次,下边资料是关于C语言十进制转换成二进制的内容,应该对各位朋友有一些用. #include int main() { int num; std::cout < ...
- 十进制转换成二进制——C语言
利用数组和调用函数编写一个十进制转换成二进制的程序 #include "stdio.h" int main(){int i = 0, n , a[32];printf(" ...
- 【JavaScript实现十进制转换成二进制】
[JavaScript实现十进制转换成二进制] 什么是二进制 二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.它的基数为2,进位规则是"逢二进一",借 ...
- C语言 十进制转换成二进制
/*十进制转换成二进制*/#include<stdio.h>int main(int argc,char argv[]){int num,i;scanf("%d",&a ...
- C语言十进制转换成二进制、八进制、十六进制
一.绪论 十六进制(Hexadecimal):在数学中是一种逢16进1的进位制.一般用数字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15. 十进制(Decimal System):每相 ...
- 十进制转换成二进制和十六进制的方法
十进制转换成二进制和十六进制的方法 十进制数转换成二进制数-般分为两个步骤,即整数部分的转换和小数部分的转换. (1 )整数部分的转换 *除2取余法:*这种方法是由于D10=N2 =dn-1x2n-1 ...
- java十进制转换成二进制
十进制数转二进制数,跟据不同的开发语言其转换方式有很多,在Java中如果相把一个十进制的整数来转换成二进制那是举手之劳,非常简单,只要用Integer.toBinaryString(int)方法就可以 ...
最新文章
- oracle ORACLE_SID使用上的意义
- 深度 | 一条查询SQL的前世今生 —— ClickHouse 源码阅读
- carsim的学习笔记2——test specifications
- rest spring_Spring REST:异常处理卷。 1个
- UE4 HTC VIVE - 番外篇 - 局域网联机三
- 服务发现与负载均衡traefik ingress
- java编写一个程序_计算已知长和宽的长方形的周长,请教一下大佬们,我们java留了一个作业,编写程序,定义一个接口Comput,声明计算周长和面积的方法...
- STM32时钟学习之STM3210X_RCC.H解读
- “征信修复”可信吗?企查查显示信用修复相关企业超1.7万家
- t-sql语句插入_T-SQL的本机大容量插入基础知识
- 关于 IIS7.0下文件写入无权限的解决办法
- OenLayers 事件注册
- Pycharm中如何pip下载包更快
- 百度AI之图像识别SDK:车牌识别
- 敏捷开发的PRD该怎么写
- Matlab 非线性回归
- 【我的读书】《薛兆丰经济学讲义》助你变得更理性、悦纳和进取
- 【室内定位】常用的机器人定位导航技术及优缺点
- [pat乙]1032 挖掘机技术哪家强
- 摩尔斯电码的c语言程序,[蓝桥杯][算法提高VIP]摩尔斯电码 (C语言代码)
热门文章
- 多因素分析模型解决方法_选择模型方法的8个决定因素
- 新型前端学习成长计划路线规划
- Python爬虫学习 6 —— 使用bs4库爬取大学排名
- 请使用netty框架实现高效稳定的websocket通信
- 公共计算机课件,全国计算机等级考试二级ACCESS公共基础知识课件.ppt
- mysql replication slave_MySQL Replication,主从同步( Master-Slave)
- [论文笔记] CornerNet论文详细解读
- 猴子吃桃,C语言,递归法
- 支付宝SDK官方下载地址
- 计算机的基本组成及工作原理(1)