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

首先,转化的思路是 辗转取余法。比如说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. v-show 与 v-if 的区别
  2. centos系统所需软件
  3. PyTorch机器学习从入门到实践-CH1
  4. php this指针的用法,C#_C#中this指针的用法示例,本文实例展示了C#中this指针的 - phpStudy...
  5. 小米miui系统已停止服务器,小米两款机型停止 MIUI 更新,明天发布最终体验版固件...
  6. 【Python基础】11_Python中的字符串
  7. logback日志pattern_@Slf4j 实现日志输入到外部文件
  8. java 合并流_Java Stream 流实现合并操作示例
  9. 【英语学习】【English L06】U06 Banking L5 I'd like to change Chinese *yuan* into pounds
  10. 将Docker image push 到azure
  11. STM32平台SD卡的FatFS文件系统开发
  12. 长沙理工大学第十二届ACM大赛L 选择困难症 (剪枝暴搜)
  13. Boruta特征筛选
  14. jsonp原理详解——终于搞清楚jsonp是啥了
  15. ▶GODOT 101
  16. 降压恒流 LED 驱动器
  17. IE9打开的html文件打印不了,IE9无法查看打印预览的2个解决方法
  18. 本地计算机无法启动ansys,Ansys帮助文件无法打开的解决方法 | 坐倚北风
  19. Visual Studio Code讲解(二) ssh远程操作电脑
  20. 树莓派笔记12:通过SPI操作OLED显示屏

热门文章

  1. Dubbo/Dubbox的服务暴露(一)
  2. STC+Andriod+ESP8266制作手机遥控小车
  3. C语言中求最大公约数的算法(三种)
  4. 读作工业4.0,唱作工业互联网,写作中国制造2025
  5. 通过加速度计和陀螺仪解算姿态
  6. svn入门----如何使用svn
  7. Bootstarp4 徽章
  8. interrupt、interrupted 、isInterrupted、InterruptedException
  9. 仿制微信/QQ在线聊天网站
  10. oepncv 移动目标追踪, 背景消除法,MOG,KNN