- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程设计报告设计题目:数制转换问题
学生姓名:
专 业:信息安全
班 级:信息安全10-02
学 号:
指导教师:
完成日期:2011年12月课程设计报告的内容及要求
一、问题描述:
任意给定一个M进制的数x ,请实现如下要求:
1、求出此数x的10进制值(用MD表示)
2、实现对x向任意的一个非M进制的数的转换
3、至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解决)
二、解决办法:
1、用数组实现该问题:
ten_else()函数是实现十进制转换为其它进制的函数,先设置一个while循环,当十进制数g等于零时停止,再将输入的十进制数x取首先对需要转换的进制M取余,然后再对其取整,并将所得的余数依次存入一个数组中,然后逆向取出数组中的元素,即得到转换后的结果。将其他进制M转换为十进制,并将其转换为非M进制数是在主函数中实现的。M进制转十进制则是从该M进制数的最后一位开始算,依次列为第0、1、2…n位并分别乘以M的0、1、2…n次方,将得到的次方相加便得到对应的十进制数,再调用ten_else()函数将其转换为非M进制的数。实际上十进制起到了一个桥梁作用。
2、用栈实现该问题:
与数组方法核心思想相同,stack定义栈,初始化一个空栈,然后判断是否为空,接着是去栈顶元素(用z表示栈顶元素),数据入栈,出栈的操作。栈具有后进先出的性质,故其用s.pop()取数较数组的逆向取数较为方便,体现了栈的优越性。
三、程序框图
四. 调试及测试
1、设计和编码的回顾讨论和分析
(1)函数ten_else()的作用体现在将任意10进制数转换为非10进制数,程序能实现1~16进制的相互转换。在10进制以上的数需要用字母表示,由此设计了switch函数,当出现余数大与10的情况可以调用相应的字母。考虑到最终结果是所求余数的倒序,添加新的整型变量j,通过一个for循环实现倒序。
(2)编程初期设计了else_ten函数,后几经修改将其融入main函数中较为直观。
(3)当输入10进制以下的数向10进制转换时候较为简单,程序中设计char型数组s[maxnum]来统计所输入数据的位数,不需要用户输入。在求10进制的时候通过for循环求一个累和即可。
(4)当输入10进制以上的数设计字母较为复杂,通过对ASCⅡ表的理解设计程序。
(5)在用栈法实现非10进制向10进制转换的时候遇到了些麻烦,当输入8A的时候程序将8当成字符类型,将其编译为数字56,导致最终转换结果出现错误。于是通过查阅ASCⅡ表对程序做出了修正,设计了条件语句if(z=57)z-=48;if(z=65){z-=65;z+=10;}
2、经验和体会
(1)#includeiostream.h
#includemath.h
//#includestdio.h
#define N 100
#define max_num 10
int y,n,s;
int m,r,x;
void ten_else(int g,int h) //十进制数转换为其他进制数
{
int c[N],mod;
int i=0,j;
while(g!=0)
{
mod = g % h;
g = g/h;
c[i] = mod;
i++;
}
for(j=i-1;j=0;j--)
switch(c[j])
{
case 10: coutA; break;
case 11: coutB; break;
case 12: coutC; break;
case 13: coutD; break;
case 14: coutE; break;
case 15: coutF; break;
default: coutc[j];}
}
void main()
{
cout请输入任意进制M:;
cinm;
if(m10)//2~9进制转换成10进制
{
char s[max_num];
int k,z=0,j=0;//z存储十进制数,j表示输入m进制数的位数。
for(int i=0;imax_num;i++)s[i]=u;
cout请输入一个m进制数:;
cins;
for(i=1;imax_num;i++)if(s[i]!=u) j++;
k=j;//保存输入位数
for(i=0;ij;i++)z=z+(s[i]-0)*(pow(m,--k));cout转换后的10进制数MD为:zendl;
cout请输入需要转换成的进制(非M):;
cinr;
cout输出转换成r进制的结果:;
ten_else(z,r);
您可能关注的文档
- 《数据库课程设计DB2课程设计-企业信息管理系统》.doc
- 《数据库课程设计-酒店管理系统》.doc
- 《数据库课程设计-网上校友通讯系统(附程序清单)》.doc
- 《数据库课程设计之试题系统》.doc
- 《数据库课程设计___职业介绍信息管理系统》.doc
- 《数据库课程设计_考试及试题库系统毕业设计(论文)》.doc
- 《数据库课程设计_考试及试题库系统毕业设计(论文)word格式》.doc
- 《数据库课程设计实验报告-图书馆管理系统》.doc
- 《数据库课程设计学生选课管理系统》.doc
- 《数据库课程设计报告-人事管理系统课程设计报告》.doc
- 金融产品2024年投资策略报告:积极适应市场风格,行为金融+机器学习新发现.pdf
- 交运物流2024年度投资策略:转型十字路,峰回路又转(2023120317).pdf
- 建材行业2024年投资策略报告:板块持续磨底,重点关注需求侧复苏.pdf
- 宏观2024年投资策略报告:复苏之路.pdf
- 光储氢2024年投资策略报告:复苏在春季,需求的非线性增长曙光初现.pdf
- 公用环保2024年投资策略报告:电改持续推进,火电盈利稳定性有望进一步提升.pdf
- 房地产2024年投资策略报告:聚焦三大工程,静待需求修复.pdf
- 保险2024年投资策略报告:资产负债匹配穿越利率周期.pdf
- 政策研究2024年宏观政策与经济形势展望:共识与分歧.pdf
- 有色金属行业2024年投资策略报告:新旧需求共振&工业原料受限,构筑有色大海星辰.pdf
文档评论(0)