使用计算机编程求解问题,计算机编程问题.ppt

计算机编程问题

解析法 通过分析问题中各要素之间的关系,用最简练的语言或形式化的符号(公式)来表达它们的关系,得出解决问题所需的表达式,然后设计程序求解问题的方法称为解析法。 例:求一元二次方程、自由落体等。 穷举法 假设你有这样一个密码箱,已经很久没有打开了,现在你想打开它,但是忘了密码,你会怎么做? 穷举法的思路:列举出所有可能的情况,逐个判断有哪些是符合问题所要求的条件,从而得到问题的解答。用于解决“是否存在”和“有多少可能性”等类型问题。 穷举法 实例:假设密码是一个5位数。只记得密码为67□□8,其中百位和十位的数字记不清了,但知道该数能够被78整除,也能被67整除。同学们能不能设计一个算法找出这个密码。 思考:题目的未知数有哪些?所需哪些变量?题目给出的条件是什么? 一、分析问题: 求出一个5位数67□□8,能同时被78和67整除。 我们可以从变量的取值范围入手 ,列举出所有情况:这个密码是个五位数67□□8,有2位数字是未知的,把这2位数字的所有可能性演变一次(0—9),就可以把可能的情况穷举完。再把各位数字合成一个5位数,判断是否同时被78和67整除就可以了。 穷举法 二、设计算法 如何确定求解的算法呢?这个问题适合用穷举法进行搜索。设计穷举法的关键是如何列举所有可能的情况。 因为2位数字未知,而且知道每位的变化范围,所以要用2个循环语句实现2位数字的取值,列举出所有的可能值。然后组成5位数d,判断d能否同时78和67整除即可得到结果。所以还需要一个判断语句对列举的五位数进行判断。 分别用a1、a2表示这2位求知数字,在它们各自的范围中变化,然后组成5位数d,判断d能否同时被78和67整除即可得到结果。 穷举法 三、编写程序 Private Sub Command8_Click()Dim d As LongDim a1,a2 As IntegerFor a1 = 0 To 9 For a2 = 0 To 9 d = 67000 + a1 * 100 + a2 * 10 + 8 If (d Mod 78 = 0) And (d Mod 67 = 0) Then Print d Next a2 Next a1 End Sub 四、调试程序 程序运行后单击窗体可得结果:67938 穷举法 实例2:书105页——107页 穷举法的思路与解题步骤 穷举法的基本思路: 把问题涉及的可能情况一一罗列出来,并且根据题目的条件和实际背景逐个作出判断,从中挑选出符合条件的解答。 穷举法的解题步骤: 1、分析问题,找出条件与未知数,确定变量; 2、列举出变量所有可能的情况,用循环或循环的嵌套实现; 3、写出符合条件的判断语句,用选择语句实现; 4、输出符合条件的情况; 5、优化程序。 穷举法的思路与解题步骤 穷举法应遵循的原则: 不能遗漏,也不应重复 排序算法 把一组数据整理为顺序的算法称为排序算法 从小到大称为顺序;从大到小称为逆序。 选择排序法的思路:首先在全部数据中找出最小的,然后在余下的数据中继续找出最小的,不断重复这个过程,直到只剩下一个数据时为止。 插入排序法的思路:边输入、边排序。每一个数据进入时,在它前面输入的数据已经按顺序排好,它只需要插入到一个排好顺序的队列之中。 数组概念 书115页 数组:把有限个类型相同的变量用同一个名字命名,然后用编号区分它们的变量的集合。这个名字称为数组名。编号称为下标。 数组的维数和定义: dim a(100) as Integer dim b(1 to 100) as Long dim c(20,30) as Long 数组概念 书115页 Dim a(1 to 3) as long Dim s as long, k as long S=1 For k=1 to 3 a(k)=k+2 s=s+a(k) Next k Print s 求S的值 随机数函数Rnd Rnd函数?返回一个小于?1?但大于或等于?0随机的单精度Single数值。?? 使用方法: 在调用?Rnd?之前,先使用无参数的?Randomize?语句初始化随机数生成器。?为了生成某个范围内的随机整数,可使用以下公式:?Int((upper?-?lower?+?1)?*?Rnd?+?lower)? 这里,upper?是随机数范围的上限,而?lower?则是随机数范围的下限。? 例:生成一两位数的整数 10~99 Int((99?-?10?+?1)?*?Rnd?+?10)?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值