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

下载本文档

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

文档简介

案例四回文数猜想本案例知识要点循环语句的使用函数嵌套的使用一、案例需求案例描述汉语的对联有回文联,例如:客上天然居,居然天上客。数学里也有这种情况,左右对称的自然数称为回文数,例如121、4224、13731。从任意一个两位或两位以上的自然数开始,将这个数与它的逆序数(如1992的逆序数是2991)相加,得到一个新数,再用这个新数与它的逆序数相加,不断重复上述操作,经过若干步的逆序相加之后,可能得到一个回文数。现在设计一个程序,由计算机在局部范围内验证“回文数猜想”,并将寻找回文数的每一个步骤都显示在屏幕上。案例效果图回文数猜想案例效果如图所示。回文数猜想案例效果图功能说明程序开始运行,要求用户首先输入一个十进制整数。计算机列举出获得回文数的具体步骤。给出是否找到回文数及其数值的答案。二、案例分析例如,从1992开始,经过7步就得到了回文数。(1)1992+2991=4983;(2)4983+3894=8877;(3)8877+7788=16665;(4)16665+56661=73326;(5)73326+62337=135663;(6)135663+366531=502194;(7)502194+491205=993399但对于数字196而言:(1)196+691=887;(2)887+788=1675;(3)1675+5761=7436;(4)7436+8347=13783;(5)13783+38731=52514;……据报道,有人已经对196进行了50000步的逆序相加,仍然未出现回文数,这个数学猜想到目前为止还没有得到证实。三、案例设计函数的设计根据上述的设计思想,本案例设计了一个求逆序数的函数和一个判断回文数的函数。逆序数函数reverse()将该函数的数据类型定义为长整型,用于得到用户输入的整数的反序数。在主函数中调用该函数时,将用户输入的整数作为实参传递给函数的形参n。在该函数中使用了for循环语句for(r=0;n>0;n/=10),循环体语句使用r=r*10+n%10,得到反序数r,并将变量r作为函数的返回值返回。开始输入一个数字计算该数和逆序数之和N判断是否为回文数Y输出回文数结束图4-2主函数流程图判断回文数函数judge()将该函数的数据类型定义为布尔型,判断reverse()函数的返回值是否为回文数。用布尔型变量success作为函数的返回值,如果是回文数,则返回“true”,否则返回“false”。在主程序中,将原数和逆序数的和作为实参传递给该函数的形参s。该函数中嵌套调用了函数reverse(),使用reverse(s)==s语句比较判断数s是否为回文数。主程序设计主程序流程如图所示。四、案例实现案例总结本案例主要的难点是将输入数字转变为逆序数的处理。对输入数字n采用循环for(r=0;n>0;n/=10)r=r*10+n%10,获得逆序数r。例如n=123,则r=321,请读者认真体会。本案例计算196的回文数过程如图所示。可以看到在4个字节的long型变量范围内,没有找到回文数。案例提高在本案例中,当累加的数字超过32位时,计算机便不能精确地显示了。因此也就无法再继续验证特殊数字196。为了克服这一缺点,可以同时开辟两个字符数组,将每个数的每一位数字分别存放在两个不同的数组a[m]和b[m]

温馨提示

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

评论

0/150

提交评论