第六次上机作业 Wed Thu Fri Sat 23 6789101112 实验名称:栈、队列的应用一—数制转换 ·实验目的:熟悉栈、队列的基本操作,学会 用栈、队列解决实际问题。薄常常 自米作品《解不子》 2002Jmmyspa com All rights reserved
第六次上机作业 • 实验名称:栈、队列的应用----数制转换 • 实验目的:熟悉栈、队列的基本操作,学会 用栈、队列解决实际问题
实验内容 January Sun Mon Tue Wed Thu Fri Sat (1)编写程序完成十进制整数向r(二、八 六)进制整数的转换。(必做) (2)对上题功能进行完善,同时完成小数之间 的转换。(选做) 提示: 第1题借助栈实现,第2 题借助队列实现。 自米作品《解不子》 2002Jmmyspa com All rights reserved
(1)编写程序完成十进制整数向r(二、八、十 六)进制整数的转换。(必做) (2)对上题功能进行完善,同时完成小数之间 的转换。(选做) ❖ 提示: 第1题借助栈实现,第2 题借助队列实现。 • 实验内容:
提示: 十进制整数num向r进制转换的方法为: nm重复除以r取余,直至商为0,取得的余数倒 排,即得到相应的二进制整数。 可借助栈存放所有取得的余数,之后依次让所 有余数出栈,保证余数存取的后进先出。 实现整数转换功能的程序可由三个程序单位构成: (1)入栈函数:实现将一个余数x入栈。 void push (stacktype *s, int x)
• 提示: 十进制整数num向r进制转换的方法为: num重复除以r取余,直至商为0,取得的余数倒 排,即得到相应的二进制整数。 可借助栈存放所有取得的余数,之后依次让所 有余数出栈,保证余数存取的后进先出。 实现整数转换功能的程序可由三个程序单位构成: (1)入栈函数:实现将一个余数x入栈。 void push(stacktype *s, int x)
(2)出栈函数:实现将栈顶元素出栈。 int pop(stacktype *s) (3)主程序:对输入的十进制整数num不断除以r, 直到商为0,取得的余数依次入栈;当入栈全部完成 之后,将栈中所有余数依次出栈并输出就得到了转 换后的结果。 注意:若要转换为16进制的数,当出栈的余数为 10-15时,应将其变为A-F输出
(2)出栈函数:实现将栈顶元素出栈。 int pop(stacktype *s) (3)主程序:对输入的十进制整数num不断除以r, 直到商为0,取得的余数依次入栈;当入栈全部完成 之后,将栈中所有余数依次出栈并输出就得到了转 换后的结果。 • 注意:若要转换为16进制的数,当出栈的余数为 10-15时,应将其变为A-F输出
主程序的框架为: void main 输入待转换的整数mm和待转换的进制r 被除数m初值赋为num 初始化空栈 whil(m不为0 求出m除以r的余数x 调用push子程序将x入栈 m重新赋值为原来m除以r的商(更新被除数) whil(栈不为空) 调用函数pop将余数依次出栈,出栈元素保存在y中 输出余数y对应的数位只对于16进制余数 时进 必要处理)
• 主程序的框架为: void main() {输入待转换的整数num和待转换的进制r 被除数m初值赋为num 初始化空栈 while( m不为0) { 求出m除以r的余数x 调用push子程序将x入栈 m重新赋值为原来m除以r的商(更新被除数) } while(栈不为空) { 调用函数pop将余数依次出栈,出栈元素保存在y中 输出余数y对应的数位(只对于16进制余数为10-15时进行 必要处理) } }