案例十进制数与进制数的转换器.pptVIP

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
案例十进制数与进制数的转换器

案例六 十进制数与二进制数的转换器 本案例知识要点 循环语句的使用 函数的嵌套调用 字符数组的使用 一、案例需求 案例描述 在C++语言中,Visual C++开发环境只提供了十进制向八进制或十六进制转换的功能,而并没有提供十进制转换为二进制的功能。 试编写一个程序,要求用户在屏幕上输入一个带小数的十进制数后,计算机给出相应的二进制数。 案例效果图 十进制数与二进制数的转换器案例效果如图所示。 运行效果 功能说明 程序开始运行后,在屏幕上给出提示。 用户按照提示输入一个十进制数,可以包括整数部分和小数部分。 程序运行结束,计算机给出对应的二进制数。 二、案例分析 十进制数转换成二进制数时,必须将十进制数的整数部分和小数部分分开转换,然后再将转换后的二进制数的整数部分和小数部分结合即可。 十进制数整数部分转换时,采用除基取余法,直到商为零。方法为:将给定的十进制数除以基数,得到一个商数和余数,再将得到的商数除以基数,又得到一个商数和余数。继续这一过程,直到商数为零为止。在此过程中,每次得到的余数就是该进制数中各位数字。其中,最先得到的余数为最低有效位,最后得到的余数为最高有效位。 例如,将十进制数254转换成二进制数的过程如下: 所以,254D=1111 1110B。 十进制数小数部分转换时,采用乘基取整法,直到小数部分为零或达到精度要求为止。方法为:用基乘以给定的十进制数的纯小数部分,取出乘积的整数部分,再用余下的纯小数部分乘以基,取出乘积的整数部分。继续这一过程,直到余下的纯小数部分为0或达到精度要求为止。最后把每次得到的整数部分从上到下依次取出,从左到右排列,得到对应的二进制数、八进制数、十六进制数。 例如,将十进制数0.687 5转换成二进制数的过程如下: 小数部分为0,转换结束。 所以,0.687 5D=0.1011B。 二者合成为:254.687 5D=1111 1110.1011B。 在转换过程中,整数部分是一定可以完全转换的;但是在小数部分进行转换时,有些小数是不能完全转换的。例如,十进制小数“0.2”转换为二进制时,不管乘了多少次的基数2,都不会只得到整数。一般遇到这种情况,在手动进行计算时只要取小数点后6~8位即可。 本案例采用两个字符数组,分别对输入的十进制数的整数部分和小数部分进行处理。 三、案例设计 函数的设计 根据上述的设计思想,本案例设计了3个函数,函数DtoB ()用于将十进制数的整数部分和小数部分分开;函数DtoBI ()用于将十进制数的整数部分转换成二进制的整数;函数DtoBF ()用于将十进制数的小数部分转换为二进制的小数。 (1)将输入数的整数部分和小数部分分开的函数DtoB() 定义DtoB()函数的类型为void型,定义双精度变量num作为形参接收主函数调用函数时传递的十进制原数据。 在函数中,将用户输入的十进制数使用强制类型转换得到整数部分,原数减去整数部分即可得到小数部分,定义整型变量inum用于存储原数据的整型部分,定义双精度变量fnum用于存储原数据中的小数部分。函数中嵌套调用了DtoBI(inum)函数和DtoBF(fnum)函数,用于将整数和小数部分分别转换为对应的二进制数。 将十进制的整数部分转换为二进制的整数的函数DtoBI() 定义DtoBI()函数的类型为void型,定义整型变量inum作为形参接收DtoB()函数调用时传递的实参值。 在函数中,定义一个包含50个字符的整型数组str[50],语句str[i]=inum%2用于将得到的余数存储在该整型数组中,语句bin[i?j?1]=str[j]+48用于将存储在数组str中的反序余数再次反序,从而得到正序数据并存储在整型数组bin中。 将十进制的小数部分转换为二进制的小数的函数DtoBF() 定义DtoBF()函数的类型为void型,定义双精度变量fnum作为形参接收DtoB()函数调用时传递的实参值。 该函数中使用的语句与DtoBI()函数的语句很类似,为了避免重复,可以使用字符串拷贝函数strcpy()完成赋值。使用语句int(fnum)+48可以将整型数据转换成字符型。整型变量i的最大值设为9,用于控制循环次数,设定小数的保留位数。 主程序设计 主程序流程如图所示。 五、案例总结与提高 案例总结 本案例采用字符数组实现了十进制数向二进制数的转换。对于一个既包含整数部分又包含小数部分的十进制数,需要分开后分别转换。 使用字符数组而不使用整型数组的理由是字符数组以“\0”作为结束符,容易处理,但字符数字和整型数字之间的ASCII码相差48,需要注意。 案例提高 本案例只能进行十进制数向二进制数的转换,请读者修改本案例,实现二进制数向十进制数的转换。 第*页 共18页 目录 退出 目录 * 第*页 共18页

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档