二、实验内容 利用栈进行数制转换,以m进制数向n进制数转换为例。用栈编写满足下列要求的程序: 对输入的任意个非负m进制数,打印出与其值相等的n进制数。 具体实现过程: 1、定义栈,包括初始分配,栈顶指针,栈底指针。 2、定义需要用到的函数。 (1)构造空栈:InitStack() (2)进栈:Push() (3)出栈:Pop() (4):数制转换函数:Conversion() 3、对函数进行连接。 程序代码:(不允许粘图,重点语句加上注释)
程序测试及运行结果: | |
分析与讨论: 第一次运行时不能正常输出,发现是在StackEmpty()函数时候搞反了真值条件,十进制转八进制用到的思想是短除法,然后进行倒序取余,体现了栈的思想。 此次上机实验,我不仅对栈的存储等操作有了一定的认识,也对进制间的转换有了深刻的理解,同时对编译程序的算法思想有了新的认识,还让我深刻的体会到了链表的重要性以及其应用的方便,并且对指针加深了印象,应用了书本中的算法思想,对我以后的编译以及完成新的程序有很大的帮助。完成这次实验的主要难点仅在于对栈的理解和对栈操作的编写。我们应当理解在将十进制转化为其他进制要用到栈,是因为在进制转换算法中,商的取得是逆序输出的,正好满足栈先入先出的特点。这才是我们要选择用栈的原因,而非盲目用栈。 |
09-17
2066
12-06
1万+
04-23
4129
11-06
1万+