十进制转化为二进制

实验4:栈和队列的基本操作实现及其应用

一、实验目的

1、   熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。

2、      学会使用栈和队列解决实际问题。

二、实验内容

1、自己确定结点的具体数据类型和问题规模:

分别建立一个顺序栈和链栈,实现栈的压栈和出栈操作。

分别建立一个顺序队列和链队列,实现队列的入队和出队操作。

2、设计算法并写出代码,实现一个十将二进制转换成2进制数。

3、选做题(*

设计一个模拟饭堂排队打饭管理软件,实现“先来先打饭”的排号叫号管理。

三、实验步骤

1、依据实验内容分别说明实验程序中用到的数据类型的定义;

2、相关操作的算法表达;

3、完整程序;

4、总结、运行结果和分析。

5、总体收获和不足,疑问等。

四、实验要求

1、   按照数据结构实验任务书,提前做好实验预习与准备工作。

2、   “*”为选做题。做好可加分。

3、   严格按照数据结构实验报告模板和规范,及时完成实验报告。

4、   在个人主页上发文章提交作业。

#include
    
    
     
     
using namespace std;
#define LEN 20    //编译器在处理这个代码之前会对LEN进行处理替换为20。宏定义
void Convert(int n,int a[])//除2取余,逆序排列"法
{
int i=LEN-1;
if(n<0) return;//if语句的嵌套,不满足则执行下一语句
else if(n==0) a[i--]=0;  //0赋值给a[i]
else{
while(n!=0)  //当型循环
{ 
a[i--]=n%2;    //%求余符号
n/=2;    //n=n/2
}
}
for(int j=0;j<=i;j++)
{
a[j]=-1;
}
}
void main()
{
int n,j=0;
cout<<"请输入一个十进制数(0~999999999999999): ";
cin>>n;
int a[LEN];
char c;
while(1){  //1代表常量表达式,表示会一直循环下去,除非手动停止,while(表达式)若表达式为1则循环
Convert(n,a);
cout<
     
     
      
      <<"=";
for(int i=0;i
      
      
       
       >c;
if(c=='y') 
{
cout<<"请输入一个十进制数(0~999999999999999): ";
cin>>n;
j=0;
}
else return;
}
} 

      
      
     
     
    
    



总结

        十进制转化为二进制我采用了数组的逆排序法,将一个数转化为二进制的算法是将一个十进制的数不断除以2,然后取其余数逆排序作为最终结果。我用数组a[i--]存放余数,最初是a[LEN],每得到一个余数,数组就向前移动一个位置储存下一个数。数组长度为20,数组前面没有使用到的就用-1截断,是最终输出后面的数。程序用了循环结构跟选择结构,其实还可以用新学的栈做这道题。
程序还用一个bug就是输入的数过大,即接近len20也是运行不了的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值