《32-信息的编程加工.ppt》由会员分享,可在线阅读,更多相关《32-信息的编程加工.ppt(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、在自然数中有很多数都是有规律的在自然数中有很多数都是有规律的 +11回文数回文数 提问提问1:1:从从20022002年起年起, ,再过多少年,我们才能再碰到一个再过多少年,我们才能再碰到一个 “ “回文数回文数”的年份?的年份? 提问提问2:2:两位的两位的“回文数回文数”有几个?有几个? 三位的三位的“回文数回文数”又有几个?又有几个? 还有一类数也很有特色:还有一类数也很有特色:首先,它是一个三位数;首先,它是一个三位数;其次,它的各位数字的立方和就是这个数其次,它的各位数字的立方和就是这个数 本身本身 。这类数,有个好听的名称:这类数,有个好听的名称:水仙花数水仙花数。 问题:请大家思
2、考并写出所有的水仙花数问题:请大家思考并写出所有的水仙花数方程:方程:a a3 3+b+b3 3+c+c3 3=a=a* *100+b100+b* *10+c10+c提示:可以用数学中的提示:可以用数学中的穷举法穷举法和和排除法排除法 方法:方法:首先,取数字首先,取数字100100,那么对应的,那么对应的a a,b b,c c分分别为别为1 1、0 0、0 0,判断这个方程是否成立;然后,再,判断这个方程是否成立;然后,再取数字取数字101101,再进行判断,再进行判断如此反复,一直判断如此反复,一直判断到数字到数字999999。 问题:问题:我们要进行多少次的验证才能够得出所我们要进行多少
3、次的验证才能够得出所 有的水仙花数?有的水仙花数? 我们可以利用计算机的优势:我们可以利用计算机的优势:高速度高速度和和大容量大容量来帮我们快速解决问题。来帮我们快速解决问题。 演示程序:演示程序: 问题:计算机能快速地求出问题的解,是问题:计算机能快速地求出问题的解,是不是代表它有思维、知道如何解决问题不是代表它有思维、知道如何解决问题? 答案是否定的,所以必须告诉它解决问题的答案是否定的,所以必须告诉它解决问题的过程和方法。在程序设计中我们称之为过程和方法。在程序设计中我们称之为算法算法。 例:小学有篇课文,里面提到过著名数学家华罗庚例:小学有篇课文,里面提到过著名数学家华罗庚“烧水泡茶烧
4、水泡茶”的问题。对于这个问题,他是怎么解决的的问题。对于这个问题,他是怎么解决的? 第一步:烧水;第一步:烧水;第二步:烧水过程中,洗刷茶具;第二步:烧水过程中,洗刷茶具;第三步:水烧开后沏茶。第三步:水烧开后沏茶。 算法的设计分两个内容算法的设计分两个内容: :一是寻找一种方法一是寻找一种方法; ;二是描述一下实现这个方法的步骤二是描述一下实现这个方法的步骤 那么在求水仙花数的过程中,我们应该寻找什么那么在求水仙花数的过程中,我们应该寻找什么方法?该如何实现这个方法的步骤。其中要包括方法?该如何实现这个方法的步骤。其中要包括:从何处着手从何处着手、解题步骤解题步骤以及以及结果处理结果处理。
5、1 1、首先确定水仙花数的范围:是一个三位数,也、首先确定水仙花数的范围:是一个三位数,也就是从就是从100100到到999999;判断表达式是否成立,如果成立;判断表达式是否成立,如果成立就是水仙花数;如果不成立就不是水仙花数。就是水仙花数;如果不成立就不是水仙花数。 2 2、思考、思考等式中等式中a a,b b,c c的值是从哪里来的?的值是从哪里来的? 对于一个三位数,计算机是不知道怎么分离出各位对于一个三位数,计算机是不知道怎么分离出各位上的数字的,所以还得向计算机说明如何分离。上的数字的,所以还得向计算机说明如何分离。请思考如何分离出一个三位数的各位上的数?请思考如何分离出一个三位数
6、的各位上的数?3 3、然后对表达式的成立与否进行判断,、然后对表达式的成立与否进行判断,如果成立就显示出这个数。如果成立就显示出这个数。 整个算法思想:整个算法思想:让计算机从让计算机从100100到到999999依次进依次进行百位、十位和个位数字的分离,然后对表行百位、十位和个位数字的分离,然后对表达式的成立与否进行判断,如果成立就显示达式的成立与否进行判断,如果成立就显示出这个数。出这个数。 注:注:VBVB语言,提供的可视化设计工具,可以直接使用语言,提供的可视化设计工具,可以直接使用窗体和控件设计程序的界面,大大地提高了程序设计窗体和控件设计程序的界面,大大地提高了程序设计的效率。的效
7、率。1 1、界面设计、界面设计标题标题说明性说明性文字文字按钮按钮用户界面是一个应用程序最重要的部分,界面是应用用户界面是一个应用程序最重要的部分,界面是应用程序呈现给用户的外观,也是实现人机交互的接口。程序呈现给用户的外观,也是实现人机交互的接口。 2 2、代码编写、代码编写Private Sub Command1_Click() Dim i As Integer 定义自然数变量定义自然数变量Dim a As Integer 定义百位上的数的变量定义百位上的数的变量Dim b As Integer 定义十位上的数的变量定义十位上的数的变量Dim c As Integer 定义十位上的数的变量
8、定义十位上的数的变量Label1.Caption = “” 初始化文本框为空白初始化文本框为空白For i = 100 To 999 a = Int(i / 100) b = Int(i / 10) - a * 10 c = i Mod 10 分离百位、十位和个位数分别放入分离百位、十位和个位数分别放入a a、b b、c c If a * a * a + b * b * b + c * c * c = i Then Print i 如果表达式成立,就输出该自然数如果表达式成立,就输出该自然数 End If 如果表达式不成立,则不输出如果表达式不成立,则不输出Next i 变量变量i i增加增加
9、1 1End Sub一个循环一个循环3 3、调试运行、调试运行在代码编写过程中和编写完成后都需要不在代码编写过程中和编写完成后都需要不断调试运行,以确保数据排序无误。断调试运行,以确保数据排序无误。 刚才我们是从刚才我们是从 100100到到999999将每个数,都重复如下将每个数,都重复如下操作:分离出百位、十位、个位上的数值,并判操作:分离出百位、十位、个位上的数值,并判断表达式是否成立,如果成立就输出,再取下一断表达式是否成立,如果成立就输出,再取下一个数字进行同样的操作。个数字进行同样的操作。 请大家讨论除了这种算法还有没有其他算法?请大家讨论除了这种算法还有没有其他算法?提示:刚才是
10、从数字出发分离出提示:刚才是从数字出发分离出 a a,b b,c c,能不能换,能不能换个角度从个角度从a a,b b,c c拼出数字?拼出数字? 作为百位上的作为百位上的 a a可以取可以取1919之间的任意数,而之间的任意数,而b b和和c c可可以取以取0909之间的任意数,从已知的之间的任意数,从已知的a a,b b,c c求出求出100100* *a+10a+10* *b+cb+c,看是否等于它们的立方和,如果相等,看是否等于它们的立方和,如果相等就输出。就输出。打开程序打开程序-“-“猜数字猜数字”先玩一下这个游戏,得出这个游戏的规律,先玩一下这个游戏,得出这个游戏的规律,然后用自然语言写出这个游戏的算法思想。然后用自然语言写出这个游戏的算法思想。整个算法思想:整个算法思想:让计算机从让计算机从100100到到999999依次进依次进行百位、十位和个位数字的分离,然后对表行百位、十位和个位数字的分离,然后对表达式的成立与否进行判断,如果成立就显示达式的成立与否进行判断,如果成立就显示出这个数。出这个数。