循环结构程序设计.ppt
《循环结构程序设计.ppt》由会员分享,可在线阅读,更多相关《循环结构程序设计.ppt(39页珍藏版)》请在第壹文秘上搜索。
1、2023-3-241第第5 5章章 循环结构程序设计循环结构程序设计学习目标学习目标理解循环结构的概念。掌握如何用while语句构成循环结构。掌握如何用do-while语句构成循环结构。熟练掌握如何用for语句构成循环结构。掌握循环结构的嵌套使用。理解break和continue语句应用于循环体。2023-3-242n引言引言l循环循环体l循环结构的构成: 用while语句 用do-while语句 用for语句 用if语句和goto语句(非结构化,不提倡) 此外,在结构化循环语句的循环体中还可以包含break和continue语句2023-3-243nwhile语句语句lwhile语句格式:
2、while (条件表达式条件表达式) SlS是循环体,往往是一个复合语句l当条件满足则继续循环l特点是: 先判断后执行l特殊情况:开始时条件不满足就不进入循环;条件永远满足则永远循环(死循环)2023-3-244真真(非零非零)表达式表达式 循环体循环体假假(零零)while语句流程图语句流程图2023-3-245S1:定义初始化变量。:定义初始化变量。 本程序需要三个变量,一个用来输入整数的本程序需要三个变量,一个用来输入整数的n,一个一个i 用来表示求阶乘过程中数据从用来表示求阶乘过程中数据从1到到n的变的变化,还有一个化,还有一个fac用来保存计算阶乘的结果用来保存计算阶乘的结果S2:输
3、入:输入n,需要考虑输入数据的合法性,需要考虑输入数据的合法性S3:计算:计算n! ,就是一个循环累乘求积的过程,就是一个循环累乘求积的过程 n!= 1*2* 3* . (n - 1)* n【例5-1】用while语句求n!2023-3-246#include stdio.hvoid main ( ) int n, i=1; long fac; printf(input an integer:); scanf(%d,&n) ; while(i0) printf( + ); /* 判断正负判断正负 */ else printf( - ); scanf(%f, &x); /* 继续输入继续输入 *
4、/ 输入: 1.2 7 -3.5 9 0 输出: + + - +【例】输入一系列实数,判断其正负,当输入零时结束循环。2023-3-248#include stdio.h while(ch!=n) num+; ch=getchar(); printf(num=%dn, num); 输入: abcd 输出: num=4【例】统计从键盘输入的一行字符的个数(以回车键作为输入结束标记)2023-3-249ndo-while语句语句ldo-while语句格式: do S while (条件表达式条件表达式)l当条件满足则继续循环l特点是: 先执行后判断l至少循环一次l特殊情况:条件永远满足则死循环20
5、23-3-2410do-while语句流程图语句流程图真真(非零非零)表达式表达式 循环体循环体假假(零零)2023-3-2411 void main ( ) int n, i=1; long fac; scanf(%d,&n) ; do fac*=i; i+; while(i=n) printf(%d!=%ldn, n, fac); /* 此例改用后面的此例改用后面的for循环语句更合理循环语句更合理 */ 输入: 5 输出: 5!=60【例5-2】用do-while语句求n!2023-3-2412【例】输入一系列整数求和,直到输入的整数是零为止。 void main() int n, s=
6、0; /*累加器初始化累加器初始化*/ do scanf(%d, &n); s=s+n; /*累加器求和累加器求和*/ while (n!=0); printf(s=%dn, s); 输入: 8 6 4 2 0 9 7 输出: s=202023-3-2413【例】用二分法求下面方程在0, 1的近似解 x3+1.1x2+0.9x-1.4=0 令令f(x)= x3+1.1x2+0.9x-1.4 。因。因f(0)0,且且f (x)0(x0,1),故,故f(x) 为单调递增函数,故在为单调递增函数,故在 0, 1间方程有一根。又间方程有一根。又f (x) 0(x0,1),得下图,得下图 设设a=0,b
7、=1,为两端点,为两端点, 循环做:求循环做:求a与与b的中点送的中点送x, 判断若判断若f(x)0, 则则b=x,即产生新右端点;,即产生新右端点; 否则否则a=x,即产生新左端点;,即产生新左端点; 经多次循环后,得到的经多次循环后,得到的x即为所求。即为所求。o1xy2023-3-2414void main( )float a=0.0, b=1.0, x; do x=(a+b)/2; if (f(x)0.0) b=x; else a=x; while (fabs(f(x)1e-6); printf(x=%fn, x);程序如下:程序如下:#includemath.h#includestd
8、io.hfloat f(float x) return(x*x*x+1.1 *x*x+0.9*x-1.4); 输出: x=0.6706572023-3-2415nfor语句语句lfor语句格式: for (表达式表达式1;表达式;表达式2;表达式;表达式3) S 先计算初始化表达式1 若条件表达式2为真则执行S,否则结束循环 执行S之后,计算修正表达式3 重新执行 循环结束则执行for之后的语句初始化表达式条件表达式修正表达式2023-3-2416for语句流程图语句流程图计算计算表达式表达式3 3计算表达式计算表达式1 1循环体循环体判断表达式判断表达式2 2假假真真forfor的下一条语句
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环 结构 程序设计