二.正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、编程原
理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论等。正文内容必
须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、结构严谨,符合各学
科、专业的有关要求。)
1、课程设计的主要内容(问题描述)
完成数制转化问题。设计要求:任意给定一个 M 进制的数 x ,实现如下要求:
4) 求出此数 x 的二进制、八进制、十进制、十六进制;
5) 实现对 x 向任意的一个非 M 进制的数的转换;
6) 用两种以上的方法实现上述要求(可用数组解决,用栈解决,其它方法解决)。
2、 设计思路
数制转换的基本原理是:将一个指定进制的数,从高位到低位,一位一位取出,并
计算出每位的十进制值,然后乘以其数基的特定幂指数,得出这一位数的十进制
值,将所有各位的十 进制值相加得出这个数的十进制值,然后再将该十进制数转换
为指定数制的数,此过程可以采用求余法进行,用这个十进制数作为被除数,用指
定的数基作除数,连续求余,得出的余数依由个位到十位等的顺序组成新数,即得
指定数制的数。本次课程设计,我主要用了数组和栈两种的方法来实现的。堆栈的主要应用
就是可以实现:后进先出(Last-In/First-Out)。转 2 进制或者 8 进制的时候(一般的方法),
先得到是低位的数字,然后得到高位的数字,刚好使用堆栈可以把这个顺序颠倒过来,每得到
一个数字就把它压栈,最后把所有的数字弹出,依次显示出来就行了。
3、程序设计构造概述
3.1 应用数组方法的程序主要构造了以下几个函数:
1)int init():int init() 函数的作用是显示提示主菜单, 同时读入内容并存入字符串数组
ipt 中;
2)bool isLegal(int jinzhi):函数 bool isLegal(int jinzhi) 用来判定输入数据的合法
性;
3) _int64 toDec(int jinzhi):_int64 toDec(int jinzhi) 函数作用是将输入的数据转成
10 进制;
4) void DecToOthers(_int64 dec):void DecToOthers(_int64 dec) 函数是将转换成
的十进制数转换为所要求的四种进制数;
5)void out():函数 void out()的功能是将转换后的数分别输出;
6)int main(int argc, char* argv[]):int main(int argc, char* argv[]) 为主函数。
3.2 应用栈的方法则主要应用了以下几个函数
1)void Initial(SeqStack *S):实现栈的建立;
2)void Initial(SeqStack *S):初始化栈;
3)int Isfull(SeqStack*S):实现进栈;
4)DataType Top(SeqStack*S):实现出栈;
5)void zhuanhuan(int n ,int m): 判断输入数据合法性及数值转换等;
6)int main():其中 int main()为主函数。
4.补充说明
两个程序中,都应用了命令“system("pause");”来实现反复执行功能的作用,同时在反复
执行是我应用了“system("cls");”实现刷屏,使运行界面看起来更简洁明了。
5、运行环境
可在 Windows 系统,VC++平台下直接运行。