C课件案例五196回文数猜想验证_第1页
C课件案例五196回文数猜想验证_第2页
C课件案例五196回文数猜想验证_第3页
C课件案例五196回文数猜想验证_第4页
C课件案例五196回文数猜想验证_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

案例五196回文数猜想的验证本案例知识要点字符数组的使用字符串函数的使用一、案例需求案例描述上一案例中提出了对特殊数字“196”的回文数猜想验证的编程实现思想。这里给出具体的实现方法。案例效果图196回文数猜想案例效果如图所示。17709次241388次功能说明程序开始运行后,用户输入数字196。程序进行计算,计算完成后给出已经计算的次数和运算结果。根据运算结果,给出在一定范围内是否存在回文数的结论。二、案例分析上一案例中使用了long型数据存储回文数的计算结果,笔者所使用的计算机是32位机,当运算结果超出32位机的最大计数范围2147483647后,会出现错误的计算结果,因此上例只能运算到第17步,无法继续验证数字196是否能推出一个回文数。据报道:有人已经计算数字196达到50000步以上,还是没有回文数出现。本案例采用字符数组存储数据,克服了long型数据容量的限制缺点,即将原数、逆序数和累加和分别存放在3个不同的字符数组num1[Max]、num2[Max]和sum[Max]中,num1数组中的数与num2数组中的数的顺序刚好相反,运算时使相应位相加即可。在sum数组中存放num1和num2之和,当然还要考虑进位标志cf,然后将sum数组赋给num1数组,重复以上步骤进行计算。三、案例设计函数的设计根据上述的设计思想,本案例中设计了5个函数,包括“整型转换成字符型函数”、“回文数比较函数”、“两数相加函数”、“数组调整函数”和“计算长度函数”。整型转换成字符型函数inttochar()回文数比较函数cmp()定义类型为布尔型的函数cmp()。两数相加函数add()定义类型为void型的无参函数add()。数组调整函数adjust()定义类型为void型的无参函数adjust()。计算长度函数intlength()定义类型为整型的无参函数length()。主程序设计主程序结构如图所示。四、案例实现五、案例总结与提高案例总结在本案例的具体设计和实现过程中,使用了字符数组进行处理,最早字符数组num1内为有效数字在前,后面全部为“\0”,如:“196\0\0\0\0……\0”格式,但为了计算相加后的进位,需要调整为“\0\0\0\0……\0196”格式,adjust()函数的作用就在于此。进位的相加使用了ASCII值,例如9的ASCII为十进制数57,请参看add()函数。虽然字符串函数中有strlen()函数,可以计算字符数组的有效长度,但这只是对于“196\0\0\0\0……\0”格式有效,而对于“\0\0\0\0……\0196”则不能使用,需要重新编制length()函数进行统计。判断是否为回文数,使用了折半比较算法。案例提高本算法可以进行任意数量级的计算,程序结果显示进行了字长为1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论