28进制转换翻转小游戏.doc
上传人:qw****27 上传时间:2024-09-11 格式:DOC 页数:8 大小:84KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

28进制转换翻转小游戏.doc

28进制转换翻转小游戏.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

编号:28第页/共NUMPAGES8页河北工业大学计算机软件技术基础(VC)2012年课程设计报告学院电信类班级C1134班姓名相倩学号116027成绩____题目:进制转换翻转小游戏二、设计思路1、总体设计分析程序的功能给定一个十进制数据,将其转换成十六进制的数据,十六进制的数据再进行翻转,翻转后再转换成十进制数据,十进制数据再逆序,作为下一周期的输入值,如此进行五个周期,输出五个周期内的数据。系统总体结构:此游戏分为五个周期,每一次周期可分为:输入的十进制转换为十六进制,十六进制的翻转,十六进制转换为十进制,十进制的翻转。每次循环由主函数控制。模块函数名称主函数Voidmain十转换十六Voidshitoshiliu十六的翻转Voidshiliufanzhuan十六转换十Intshiliutoshi十的翻转Intshifanzhuan其中VoidshitoshiliuVoidshiliufanzhuanIntshiliutoshiIntshifanzhuan均为调用函数,在主函数中被调用。2、各功能模块的设计:1)Voidmain模块这是一个五个周期的循环,所以主函数要能实现循环,首先用一个if函数来判断输入的数据是否符合要求,如果不符合要求,则要输出“请重新输入:”。如果符合要求,就进行程序代码。程序是利用for函数来实现周期循环的。每次循环,在主函数内再调用其它函数。代码参见Voidmain函数。2)Voidshitoshiliu模块此函数用来把输入的十进制数据转换成十六进制的数据,利用数组的赋值和while函数来实现,再以数组的输出来输出转换成的十六进制数据。代码参见Voidshitoshiliu函数3)Voidshiliufanzhuan模块此函数实现的是字符的逆序,在for循环下,字符数组调换,然后使用字符数组的输出将十六进制数据翻转后的字符输出。代码参见Voidshiliufanzhuan函数。4)Intshiliutoshi模块此函数把字符型的十六进制转变成整型的十进制数,利用的是字符的ASCII码值来转换的,根据字符ASCII码值和数据的关系来编程的,最后还要return回到主函数继续运行。代码参见Intshiliutoshi函数。5)Intshifanzhuan模块此函数是数据的逆序,利用取余和取整赋值于变量,在运用乘权法得到转换后的十进制数。代码参见Intshifanzhuan函数。6)创新设计部分输入于程序中的数据应该为小于10000,如果大于10000,不符合程序要求,应该与以提醒,如果为小于0,也不符合要求,所以,当输入一个十进制数据时,应该先对其进行一下判断,符合要求就继续进行,不符合输出提醒语。改进的代码参见panduan函数。3、设计中的主要困难及解决方案设计中主要用到的就是十六进制转换到十进制时,首先想到的是用乘权法,当把程序代码写出后,在运行过程中,发现少一循环,但检查代码却没用发现任何错误。再请教老师后决定采用字符的ASCII码值来编写程序,因为对ASCII码值不是很清楚,所以再设计这段代码时,很费力,最后在了解了ASCII码值与数据的关系后,运用for循环来完成了这段代码。发现用ASCII码值很方便,但是却需要自己对其的数值运算很了解,数据的计算必须准确。4、我所设计的程序最终完成的功能说明我编制的程序能完成的功能输入一个十进制的数据,转变成十六进制后,十六进制数据进行翻转,翻转后在转换成十进制数据,最后十进制数据在翻转最为下一周期的输入值,如此循环五个周期,将五个周期内的数据都先显示出来。准备的测试数据及运行结果三、程序清单1)main函数//主函数voidmain(){intn;cout<<"请输入一个10000以内的整数:";cin>>n;if(n>=0&&n<=10000)cout<<"\t"<<n;elsecout<<"请重新输入:";for(intm=0;m<5;m++){shitoshiliu(n);shiliufanzhuan();n=shiliutoshi();if(m!=4)//当m=4时,不进行下一步转换;n=shifanzhuan(n);}}2)Voidshitoshiliu函数voidshitoshiliu(intn){intj,i=0,q;while(n!=0)//十进制转换成十进制;{j=n%16;str[i]=s[j];n/=16;i++;}cout<<"\t";for(q=i-1;q>=0;q--)//逆序输出str[q];cout<<str[q];}3)Vo