十进制转化为二进制
来源:互联网 发布:phpcms和帝国cms 编辑:程序博客网 时间:2024/05/29 04:42
实验4:栈和队列的基本操作实现及其应用
一、实验目的
1、 熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。
2、 学会使用栈和队列解决实际问题。
二、实验内容
1、自己确定结点的具体数据类型和问题规模:
分别建立一个顺序栈和链栈,实现栈的压栈和出栈操作。
分别建立一个顺序队列和链队列,实现队列的入队和出队操作。
2、设计算法并写出代码,实现一个十将二进制转换成2进制数。
3、选做题(*)
设计一个模拟饭堂排队打饭管理软件,实现“先来先打饭”的排号叫号管理。
三、实验步骤
1、依据实验内容分别说明实验程序中用到的数据类型的定义;
2、相关操作的算法表达;
3、完整程序;
4、总结、运行结果和分析。
5、总体收获和不足,疑问等。
四、实验要求
1、 按照数据结构实验任务书,提前做好实验预习与准备工作。
2、 加“*”为选做题。做好可加分。
3、 严格按照数据结构实验报告模板和规范,及时完成实验报告。
4、 在个人主页上发文章提交作业。
#includeusing 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< c;if(c=='y') {cout<<"请输入一个十进制数(0~999999999999999): ";cin>>n;j=0;}else return;}}
总结
十进制转化为二进制我采用了数组的逆排序法,将一个数转化为二进制的算法是将一个十进制的数不断除以2,然后取其余数逆排序作为最终结果。我用数组a[i--]存放余数,最初是a[LEN],每得到一个余数,数组就向前移动一个位置储存下一个数。数组长度为20,数组前面没有使用到的就用-1截断,是最终输出后面的数。程序用了循环结构跟选择结构,其实还可以用新学的栈做这道题。
程序还用一个bug就是输入的数过大,即接近len20也是运行不了的。
阅读全文
0 0
- 十进制转化为二进制
- 十进制转化为二进制
- 十进制转化为二进制
- 十进制转化为二进制
- 十进制转化为二进制
- 十进制转化为二进制
- 十进制转化为二进制
- 二进制转化为十进制
- 十进制转化为二进制
- 十进制转化为二进制
- 十进制转化为二进制
- 十进制转化为二进制
- 十进制转化为二进制、二进制转化为十进制
- java--十进制转化为二进制
- 将十进制转化为二进制
- 十进制转化为二进制230
- 十进制负数转化为二进制
- (Java)十进制转化为二进制
- [C语言]if/else 与 ?:的时间比较
- 【JavaDemo】使用key遍历含自定义类的Map集合
- RabbitMQ 小结
- hadoop搭建之网络配置
- Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
- 十进制转化为二进制
- 强化学习的基础知识
- MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value
- 学生信息管理系统之第二篇主要功能模块设计和数据库设计
- Hive删除表
- python进行JB正态性检验
- volatile关键字解析(jdk1.5之后)
- Java线程常用操作方法
- JAVA小程序--裁判评分系统