4迭代与重复-循环程序设计4-2.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4迭代与重复-循环程序设计4-2

高级语言程序设计 第4章 迭代与重复—循环程序设计(4) 今天讨论的题目 判断一个数是否是素数 再次讨论学生成绩统计问题 猜数游戏模拟 目标 break/continue 自顶向下逐步求精的分析设计方法 随机数的产生,随机现象的模拟仿真 问题1 :判断一个数是否是素数 问题描述:从键盘输入一个自然数,判断它是否是素数,是素数输出1,否则输出0. 样例输入1: 2 样例输出1: 1 样例输入2: 1 样例输出2: 0 样例输入3: 4 样例输出3: 0 如果是这样的测试用例? 样例输入: 2 1 4 0 样例输出: 1 0 0 分析 什么是素数?素数也称质数,是只有1和自身两个因数的自然数. 1不是素数,2是最小的素数 怎么判断自然数m是否是素数呢? 方法1:依次用2到m-1的数作为除数,判断它是否能整除m。 方法2:依次用2到sqrt(m)的数为除数,判断它是否能整除m。 怎么控制循环? 对于方法1: im, (其中i是循环控制的计数器,循环控制变量,m是要判断的数)i初始化为2 对于方法2: i=k,(其中k是要判断的数m 的算术平方根) (下面只考虑这种情况),i初始化为2 算法设计(关于方法2) 1 循环控制变量i初始化2 2 输入一个自然数m,并求它的算术平方根k 3 如果 m==1 则输出0 执行(7) 4 如果 i=k 执行 (5) 否则执行(6) 5 如果 m%i ==0 则 执行(6) 否则 i++,返回(4) 6 如果ik 输出1 否则输出0 7 结束 流程图 如果先不考虑用户输入1的情况,实现代码为 再次讨论成绩统计问题 问题描述:循环接收用户键盘输入的有效学生成绩并累加求和,如果输入的数据超出了0到100的范围,则忽略它,如果输入一个非数值型数据则结束输入,打印求和结果和平均结果。 输入样例 60 60 60 -1 60 110 a 输出样例 ok ok ok err ok err average of 4 scores is 60.0 算法设计 流程图 算法实现 continue0.c 思考题:输入CTRL-Z结果怎样?能结束吗?输入-1又怎样? 思考题:break/continue破坏了程序的单入口单出口的结构化特征,不用break/continue是否 可以实现同样的效果? break语句只适用于标准的循环和多分支选择结构,continue也只能用于标准的循环结构中 ,它们一般都是有条件的 无条件转移语句—goto 一般形式 goto 语句标号; …… 语句标号: …… 语句标号:可以在goto语句的前面 判断素数问题用goto取代break 见代码 goto0.c 更多的goto 见代码 goto.c 问题3:随机数游戏模拟 问题描述: 计算机“想”好一个1到100之间的数,你来猜,如果没猜中给出提示,是大了还是小了。如果猜中输出祝贺信息!问是否继续猜? 假设计算机“想”的数是55(这个数是随机的) 输入样例: 50 60 55 输出样例: too low too high Congradulation! you are right! 继续否? 再如:碰运气游戏 游戏者每次投掷两个骰子,把两个朝上的点数相加。第一次投掷时如果得到的和为7或11,游戏者就赢了;如果得到的和为2、3或12游戏者就输了(即计算机这个“东家”就赢了);如果得到的和为4、5、6、8、9或10,那么这个和就作为游戏者的点数,要想赢必须再次投掷,一直到取得自己的点数为止,如果投掷出7点,游戏者就输了。 分析 自顶向下,逐步求精:从抽象到具体,逐步明晰的过程。开始先勾划出求解方案的一个比较粗糙的轮廓,确定一个比较抽象地概念,然后再逐步细化,把抽象的东西逐渐细化到可以实现的具体步骤 算法设计(顶层1) 1.1 计算机“想”一个1到100之间的数 1.2 猜数 1.3 是否继续猜?是回到1.1,否结束 计算机怎么想那个数—把1.1细化 1.1 使用随机函数rand() 产生一个1~100之间的数number rand( )是包含在stdlib库中的一个函数,它能返回一个0到RAND_MAX之间的一个整数,ANSI标准规定RAND_MAX不得小于32767,从stdlib.h中可以查到它的值就是32767。 怎么猜 – 把1.2 细化 1.2.1 读用户猜的数guess 1.2.2 判断是否猜中,如果没中,返回到 (1.2.

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档