为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

C++课件 案例六 十进制数与二进制数的转换器

2013-04-12 18页 ppt 451KB 87阅读

用户头像

is_280733

暂无简介

举报
C++课件 案例六 十进制数与二进制数的转换器null案例六 十进制数与二进制数的转换器案例六 十进制数与二进制数的转换器本案例知识要点 循环语句的使用 函数的嵌套调用 字符数组的使用一、案例需求一、案例需求案例描述 在C++语言中,Visual C++开发环境只提供了十进制向八进制或十六进制转换的功能,而并没有提供十进制转换为二进制的功能。 试编写一个程序,要求用户在屏幕上输入一个带小数的十进制数后,计算机给出相应的二进制数。 案例效果图 十进制数与二进制数的转换器案例效果如图所示。运行效果 运行效果 null功能说明 程序开始运行后,在屏幕上给出提示。 用户按...
C++课件 案例六  十进制数与二进制数的转换器
null案例六 十进制数与二进制数的转换器案例六 十进制数与二进制数的转换器本案例知识要点 循环语句的使用 函数的嵌套调用 字符数组的使用一、案例需求一、案例需求案例描述 在C++语言中,Visual C++开发环境只提供了十进制向八进制或十六进制转换的功能,而并没有提供十进制转换为二进制的功能。 试编写一个程序,要求用户在屏幕上输入一个带小数的十进制数后,计算机给出相应的二进制数。 案例效果图 十进制数与二进制数的转换器案例效果如图所示。运行效果 运行效果 null功能说明 程序开始运行后,在屏幕上给出提示。 用户按照提示输入一个十进制数,可以包括整数部分和小数部分。 程序运行结束,计算机给出对应的二进制数。二、案例分析二、案例分析十进制数转换成二进制数时,必须将十进制数的整数部分和小数部分分开转换,然后再将转换后的二进制数的整数部分和小数部分结合即可。 十进制数整数部分转换时,采用除基取余法,直到商为零。方法为:将给定的十进制数除以基数,得到一个商数和余数,再将得到的商数除以基数,又得到一个商数和余数。继续这一过程,直到商数为零为止。在此过程中,每次得到的余数就是该进制数中各位数字。其中,最先得到的余数为最低有效位,最后得到的余数为最高有效位。 例如,将十进制数254转换成二进制数的过程如下:nullnull所以,254D=1111 1110B。 十进制数小数部分转换时,采用乘基取整法,直到小数部分为零或达到精度要求为止。方法为:用基乘以给定的十进制数的纯小数部分,取出乘积的整数部分,再用余下的纯小数部分乘以基,取出乘积的整数部分。继续这一过程,直到余下的纯小数部分为0或达到精度要求为止。最后把每次得到的整数部分从上到下依次取出,从左到右排列,得到对应的二进制数、八进制数、十六进制数。 例如,将十进制数0.687 5转换成二进制数的过程如下:null小数部分为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)函数,用于将整数和小数部分分别转换为对应的二进制数。null将十进制的整数部分转换为二进制的整数的函数DtoBI() 定义DtoBI()函数的类型为void型,定义整型变量inum作为形参接收DtoB()函数调用时传递的实参值。 在函数中,定义一个包含50个字符的整型数组str[50],语句str[i]=inum%2用于将得到的余数存储在该整型数组中,语句bin[ij1]=str[j]+48用于将存储在数组str中的反序余数再次反序,从而得到正序数据并存储在整型数组bin中。null将十进制的小数部分转换为二进制的小数的函数DtoBF() 定义DtoBF()函数的类型为void型,定义双精度变量fnum作为形参接收DtoB()函数调用时传递的实参值。 该函数中使用的语句与DtoBI()函数的语句很类似,为了避免重复,可以使用字符串拷贝函数strcpy()完成赋值。使用语句int(fnum)+48可以将整型数据转换成字符型。整型变量i的最大值设为9,用于控制循环次数,设定小数的保留位数。null主程序设计 主程序如图所示。nullnullnullnullnull五、案例总结与提高五、案例总结与提高案例总结 本案例采用字符数组实现了十进制数向二进制数的转换。对于一个既包含整数部分又包含小数部分的十进制数,需要分开后分别转换。 使用字符数组而不使用整型数组的理由是字符数组以“\0”作为结束符,容易处理,但字符数字和整型数字之间的ASCII码相差48,需要注意。 案例提高 本案例只能进行十进制数向二进制数的转换,请读者修改本案例,实现二进制数向十进制数的转换。
/
本文档为【C++课件 案例六 十进制数与二进制数的转换器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索