十进制转换成二进制 (栈)

首先,转化的思路是 辗转取余法。比如说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

十进制转换成二进制 (栈)相关推荐

  1. 算法设计-利用栈把十进制转换成二进制

    十进制转换成二进制 void conversion(){ InitStack(S); scanf("%d",n); while(N){ Push(S,n%2) n=n/2; } w ...

  2. c语言十进制转换成二进制八进制十六进制,十进制数转换成二进制,八进制,十六进制(c语言)...

    利用一个函数实现十进制数转换成二进制,八进制,十六进制.利用的是栈的后进先出的思想.算法简单. #include #include #include #define STACK_INIT_SIZE 1 ...

  3. C语言十进制转换成二进制源码

    把开发过程比较重要的一些内容备份一次,下边资料是关于C语言十进制转换成二进制的内容,应该对各位朋友有一些用. #include int main() { int num; std::cout < ...

  4. 十进制转换成二进制——C语言

    利用数组和调用函数编写一个十进制转换成二进制的程序 #include "stdio.h" int main(){int i = 0, n , a[32];printf(" ...

  5. 【JavaScript实现十进制转换成二进制】

    [JavaScript实现十进制转换成二进制] 什么是二进制 二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.它的基数为2,进位规则是"逢二进一",借 ...

  6. C语言 十进制转换成二进制

    /*十进制转换成二进制*/#include<stdio.h>int main(int argc,char argv[]){int num,i;scanf("%d",&a ...

  7. C语言十进制转换成二进制、八进制、十六进制

    一.绪论 十六进制(Hexadecimal):在数学中是一种逢16进1的进位制.一般用数字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15. 十进制(Decimal System):每相 ...

  8. 十进制转换成二进制和十六进制的方法

    十进制转换成二进制和十六进制的方法 十进制数转换成二进制数-般分为两个步骤,即整数部分的转换和小数部分的转换. (1 )整数部分的转换 *除2取余法:*这种方法是由于D10=N2 =dn-1x2n-1 ...

  9. java十进制转换成二进制

    十进制数转二进制数,跟据不同的开发语言其转换方式有很多,在Java中如果相把一个十进制的整数来转换成二进制那是举手之劳,非常简单,只要用Integer.toBinaryString(int)方法就可以 ...

最新文章

  1. oracle ORACLE_SID使用上的意义
  2. 深度 | 一条查询SQL的前世今生 —— ClickHouse 源码阅读
  3. carsim的学习笔记2——test specifications
  4. rest spring_Spring REST:异常处理卷。 1个
  5. UE4 HTC VIVE - 番外篇 - 局域网联机三
  6. 服务发现与负载均衡traefik ingress
  7. java编写一个程序_计算已知长和宽的长方形的周长,请教一下大佬们,我们java留了一个作业,编写程序,定义一个接口Comput,声明计算周长和面积的方法...
  8. STM32时钟学习之STM3210X_RCC.H解读
  9. “征信修复”可信吗?企查查显示信用修复相关企业超1.7万家
  10. t-sql语句插入_T-SQL的本机大容量插入基础知识
  11. 关于 IIS7.0下文件写入无权限的解决办法
  12. OenLayers 事件注册
  13. Pycharm中如何pip下载包更快
  14. 百度AI之图像识别SDK:车牌识别
  15. 敏捷开发的PRD该怎么写
  16. Matlab 非线性回归
  17. 【我的读书】《薛兆丰经济学讲义》助你变得更理性、悦纳和进取
  18. 【室内定位】常用的机器人定位导航技术及优缺点
  19. [pat乙]1032 挖掘机技术哪家强
  20. 摩尔斯电码的c语言程序,[蓝桥杯][算法提高VIP]摩尔斯电码 (C语言代码)

热门文章

  1. 多因素分析模型解决方法_选择模型方法的8个决定因素
  2. 新型前端学习成长计划路线规划
  3. Python爬虫学习 6 —— 使用bs4库爬取大学排名
  4. 请使用netty框架实现高效稳定的websocket通信
  5. 公共计算机课件,全国计算机等级考试二级ACCESS公共基础知识课件.ppt
  6. mysql replication slave_MySQL Replication,主从同步( Master-Slave)
  7. [论文笔记] CornerNet论文详细解读
  8. 猴子吃桃,C语言,递归法
  9. 支付宝SDK官方下载地址
  10. 计算机的基本组成及工作原理(1)