[工学]C语言循环结构程序设计2.ppt

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

循环程序设计(2) 循环程序设计 上周内容回顾 While(条件) 循环体 Do {……} while(条件) For(初始化表达式;条件;修正表达式) 循环程序设计 例4:猜数游戏( ch6_004) 编写一道猜数的程序,在程序中预设一个数字,要求用户任意从键盘输入一个价格(数字),由程序在屏幕上给出“高了”或者“低了”的提示,当用户输入数字等于目标数,程序结束。 /*例4:猜数游戏。 ch6_004 */ #define GOAL 648 main() { int data; do { printf(Please input data:\n); scanf(“%d”,data);/*输入任意一个数字到data*/ if (dataGOAL) printf(Its too big,please try again!\n); else if(dataGOAL) printf(Its too small,please try again!\n); else printf(You are right!Bye-bye!); } while (data!=GOAL); } break语句和continue 1.break语句 2、continue 语句 #include stdio.h void main() {int a, b; for(a=1,b=1; a=10; a++) {if(b=10) break; if(b%3==1) {b+=3; continue;} } printf(%d\n,a); } 循环程序设计(循环嵌套) 例7:打印如下所示等腰三角形() * *** ***** ******* ********* 循环程序设计(循环嵌套) 循环嵌套 在循环体语句中又包含有另一个完整的循环结构的形式,称为循环的嵌套。如果内部的循环体中又有嵌套的循环语句,则构成多重循环。 循环嵌套 例8ch6_008 :百钱买百鸡。(鸡翁一值钱五,鸡母一值钱3,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 循环嵌套 枚举或穷举算法:按问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解,若是,我们采纳这个解,否则抛弃它。对于所列举的值,既不能遗漏也不能重复。 循环嵌套 例 、搬砖问题:36块砖,36人搬,男搬4,女搬3,两个小孩抬一块砖。要求一次全搬完,问男、女、小孩各若干? 循环程序设计 使用枚举法,主要掌握两条原则: 1、确定搜索范围。 2、选择搜索策略。 搜索策略选择得好坏,直接决定程序的工作量的大小。 循环程序设计 请思考下面程序的功能,并思考怎样改变搜索策略或搜索范围,可以提高程序的效率。 main() {int m=7,n=5,i=1; do {if(i%m==0) if(i%n==0) {printf(“%d\n”,i); break;} i++;} while (i!=0); } 循环程序设计 例6.6 判断m是否素数。 算法: 素数:除了1和自身外不能被其他数整除。 判断方法:测试m能否被2到根号m整除。 为什么不是2到m-1,而是根号m? 一个数m,如果它有约数的话,约数肯定要成对出现,必然有一个大于根号m,另一个小于根号m(显然如果都大于根号m,那相乘结果会大于m)。 根号m的计算方法:利用求平方根的函数sqrt 循环变量:定义为i(整型) 循环变量的范围: 2~k ,k=sqrt(m) (k为整型) 即:i的初值为2,循环执行条件为i=k 循环变量的变化:i++ 重复执行的操作: 如果m能被i整除,则说明m不是素数,也就不需要进行后面的判断,应退出循环结构(用break语句);否则,继续判断。 结果的输出: 如果循环是中途退出的,则i=k,输出m不是素数;否则,m是一个素数。 例6.6 程序 #includestdio.h #includemath.h main( ) { int i,m,k; scanf(%d,m); k=(int)sqrt(m); for(i=2;i=k;i++) if(m%i==0) break; if(i=k) printf(%d不是一个素数\n,m); else printf(%d是一个素数\n,m); } 循环程序设计 算法2:迭代。不断用新

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档