文档详情

C语言演示课件第05章节.ppt

发布:2017-04-19约4.53千字共41页下载文档
文本预览下载声明
第5章 循环结构的程序设计;5.1 循环结构问题的提出;(2)计算:1*2*3*…*n。这是一个累乘的问题,每个乘数与前面的一个数都有固定的关系(后面的数比前面的数大1)。因此每次累乘的数都是前面的数加1,方法相同,实际这是一个重复累乘的问题。 这一类问题,重复的次数有些情况是已知的,有些情况是未知的。但是这些问题都带有重复性的工作,解决这类问题,采用循环结构最为适当。;有些问题,采用单重循环就能解决,比如上面所举的两个例子,都可以采用单重循环;而有些问题,比如说二维表格数据输出的问题,则需要采用双重循环才能解决。 C语言提供了三种实现循环结构的语句,它们分别是:while语句、do-while语句和for语句,三种循环语句各有不同的特点,我们可以灵活使用。;5.2 解决单重循环的问题;图5-1 while语句的执行;说明 (1)用while语句构成的是“当型”循环结构,它的特点是:“先判断,后执行”,如果表达式的最初值为0,则循环体语句一次也不执行。只有当表达式的值为非0时,才能执行循环体语句。执行完循环体语句后,再返回循环的开始部位,判断表达式的值,决定是否继续循环。;(2)循环体语句只能是一条语句,如需要使用多条语句,必须采用复合语句的形式。 (3)循环体内一定要有能够改变表达式的值的操作,最终使其表达式的值变为0,否则将形成无休止的“死”循环。;例5.1 求:1+2+3+…+n的累加求和的值。 问题分析: (1)我们首先需要设置一个存放累加求和的变量sum,每一次加一个数放入变量sum中; (2)再设置一个存放加数的变量i,每一次累加时被加的数均需比前一个数大1; (3)最后还需设置一个结束累加的变量n,确定累加到什么数为止。 ;根据以上分析,写出源程序如下: main ( ) { int i, n, sum; i=1; sum=0; printf ( Please input n : ); scanf (%d, n ); while ( i=n ) /* 累加的数i 小于或等于终止数n就循环累加,否则结束循环*/ ; { sum=sum+i; i++; } printf (sum=%d\n, sum ); } 说明 (1)存放累加求和的变量sum,说明后必须赋初值,一般为0,否则由于说明的变量其原有初值不确定,导致结果有误。;(2)程序中sum=sum+i; 语句是一个累加求和功能的语句,它是将变量sum中的数值加上变量i中的数值,求和后再放入变量sum中,此时变量sum中存放的数值已经变为新的数值,原有数值已被覆盖掉。 以上程序运行情况如下: Please input n : 100↙ sum=5050;5.2.2 do-while 循环语句 do-while 循环语句的形式如下: do 循环体语句 while (表达式); do-while语句的执行过程如图5-2所示。 ;图5-2 do-while语句的执行过程;说明 (1)用do-while语句构成的仍是“当型循环”结构。它的特点是:“先执行,后判断”。遇到do关键字后,首先执行循环体语句,然后计算表达式的值,如表达式的值为非0,则继续执行循环体语句,然后再计算表达式的值,如表达式的值为0,则结束循环,执行do-while语句后面的语句。因此这种循环结构,最少也可以执行一次循环体语句。; (2)循环体语句仍然只能是一条语句,如需要使用多条语句,必须采用复合语句的形式。 (3)循环体语句中也一定要有改变表达式的值的操作,最终使其表达式的值变为0,结束循环。否则将成为“死”循环。 (4)在关键字while的小括号的后面,一定要加分号“;”,千万不能忘记,它表示do-while语句到此结束。;例5.2 求:n!,即计算1×2×3×…×n的值。 源程序如下: main ( ) { int i, n, s; i =1; s =1; printf ( Please input n: ); scanf (%d, n );; do { s = s*i ; /* 使用“累乘”的公式 */ i++; } while ( i=n); printf (%d!= %d\n, n, s ); } ;说明 (1)存放累乘求和的变量s,说明后必须赋初值,一般为1,否则由于说明的变量其原有初值不确定,导致结果有误。 (2)程序中s = s*i; 语句是一个累乘求和功能的语句,它是将变量s中的数值乘上变量i中的数值,累乘后再放入变量s中,此时变量s中存放的数值已经变为新的数值,原有数值已被覆盖掉。;以上程序运行情况如下: Pl
显示全部
相似文档