c语言中循环变量增值表达式,C语言程序设计 第05章 循环结构程序设计.ppt

《C语言程序设计 第05章 循环结构程序设计.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计 第05章 循环结构程序设计.ppt(18页珍藏版)》请在人人文库网上搜索。

1、第5章 循环结构程序设计,5.1 循环语句概述5.2 for语句和while语句5.3 直到型循环do-while语句5.4 break语句与continue语句 5.5 应用举例 良好的源程序书写习惯注释(续) Return,5.1 循环语句概述,求1100的累计和。 根据已有的知识,可以用“1+2+100”来求解,但显然很繁琐。现在换个思路来考虑: 首先设置一个累计器sum,其初值为0,利用sum += n来计算(n依次取1、2、100),只要解决以下3个问题即可: (1)将n的初值置为1; (2)每执行1次“sum += n”后,n增1; (3)当n增到101时,停止计算。此时,sum的。

2、值就是1100的累计和。 根据已有的知识,单独实现每一步都不难。但是,由于需要经常使用这种重复计算结构(称为循环结构),C语言提供了3条循环语句来实现,以简化、并规范循环结构程序设计。 在语言中,可用以下语句实现循环: (1)用for语句。 (2)用do-while语句。 (3)用while语句。,(4)用goto语句和if语句构成循环。使用goto语句实现求解1100累计和的程序可以如下: main() int n=1, sum=0; loop: sum += n; n+; if (n=100) goto loop; printf(“sum=%dn”, sum); 其中“loop:”为语句标。

3、号(格式:标号: 语句行),其命名遵循标识符命名规则。goto语句格式:goto 标号,功能为:使系统转向标号所在的语句行执行。 注意:结构化程序设计方法,主张限制使用goto语句。因为滥用goto语句,将会导致程序结构无规律、可读性差。 另外,从功能上说,for语句可完全代替当型循环语句while,所以该语句也不是必需的。 Return,5.2 for语句和while语句,在3条循环语句中,for语句最为灵活,不仅可用于循环次数已经确定的情况,也可用于循环次数虽不确定、但给出了循环继续条件的情况。案例5.1 求1100的累计和。/*案例代码文件名:AL5_1.C*/*程序功能:求1100的累。

4、计和*/main() int i,sum=0; /*将累加器sum初始化为0*/ for(i=1; i=100; i+) sum += i;/*实现累加*/ printf(sum=%dn,sum); 程序演示 程序运行情况如下: sum=5050,案例5.2 求n的阶乘n!(n!=1*2*n)。/*案例代码文件名:AL5_2.C*/*程序功能:求n!*/main() int i, n; long fact=1; /*将累乘器fact初始化为1*/ printf(“Input n: ”); scanf(“%d”, 程序演示 程序运行情况如下:Input n: 55 ! = 120,1for语句的。

5、一般格式 for(变量赋初值;循环继续条件;循环变量增值) 循环体语句组; 2for语句的执行过程 执行过程如图5-1所示。 (1)求解“变量赋初值”表达式。 (2)求解“循环继续条件”表达式。如果其值非0,执行(3);否则,转至(4)。 (3)执行循环体语句组,并求解“循环变量增值”表达式,然后转向(2)。 (4)执行for语句的下一条语句。 3说明 (1)“变量赋初值”、“循环继续条件”和“循环变量增值”部分均可缺省,甚至全部缺省,但其间的分号不能省略。,(2)当循环体语句组仅由一条语句构成时,可以不使用复合语句形式,如上例所示。 (3)“循环变量赋初值”表达式,既可以是给循环变量赋初值的。

6、赋值表达式,也可以是与此无关的其它表达式(如逗号表达式)。 例如,for(sum=0;i=100;i+) sum += i; for(sum=0,i=1;i=100;i+) sum += i; (4)“循环继续条件”部分是一个逻辑量,除一般的关系(或逻辑)表达式外,也允许是数值(或字符)表达式。,4while语句 (1)一般格式 while(循环继续条件) 循环体语句组; (2)执行过程 执行过程如图5-2所示。 1)求解“循环继续条件”表达式。如果其值为非0,转2);否则转3)。 2)执行循环体语句组,然后转1)。 3)执行while语句的下一条。 显然,while循环是for循环的一种简化。

7、形式(缺省“变量赋初值”和“循环变量增值”表达式)。,案例5.3 用while语句求1100的累计和。/*案例代码文件名:AL5_3.C*/*程序功能:求1100的累计和*/main() int i=1,sum=0; /*初始化循环控制变量i和累计器sum*/ while( i=100 ) sum += i;/*实现累加*/ i+;/*循环控制变量i增1*/ printf(“sum=%dn”,sum); 程序演示 程序运行情况如下:sum=5050,5循环嵌套 (1)循环语句的循环体内,又包含另一个完整的循环结构,称为循环的嵌套。循环嵌套的概念,对所有高级语言都是一样的。 (2)for语句和w。

8、hile语句允许嵌套,do-while语句也不例外。 Return,5.3 直到型循环do-while语句,1一般格式 do 循环体语句组; while(循环继续条件);/*本行的分号不能缺省*/ 当循环体语句组仅由一条语句构成时,可以不使用复合语句形式。 2执行过程 执行过程如图5-3所示。 (1)执行循环体语句组。 (2)计算“循环继续条件”表达式。如果“循环继续条件”表达式的值为非 0(真),则转向(1)继续执行;否则,转向(3)。 (3)执行do-while的下一条语句。 do-while循环语句的特点是:先执行循环体语句组,然后再判断循环条件。,案例5.4 用do-while语句求解。

9、1100的累计和。/*案例代码文件名:AL5_4.C*/*程序功能:求1100的累计和*/main() int i=1, sum=0; /*定义并初始化循环控制变量,以及累计器*/ do sum += i; /*累加*/ i+; while(i=100);/*循环继续条件:i=100*/ printf(“sum=%dn”,sum); 程序演示 do-while语句比较适用于处理:不论条件是否成立,先执行1次循环体语句组的情况。除此之外,do-while语句能实现的,for语句也能实现,而且更简洁。 Return,5.4 break语句与continue语句,为了使循环控制更加灵活,语言提供了b。

10、reak语句和continue语句。 1一般格式: break; continue; 2功能 (1)break:强行结束循环,转向执行循环语句的下一条语句。 (2)continue:对于for循环,跳过循环体其余语句,转向循环变量增量表达式的计算;对于while和do-while循环,跳过循环体其余语句,但转向循环继续条件的判定。 3break和continue语句对循环控制的影响如图5-4所示。 4说明 (1)break能用于循环语句和switch语句中,continue只能用于循环语句中。 (2)循环嵌套时,break和continue只影响包含它们的最内层循环,与外层循环无关。 Retu。

11、rn,5.5 应用举例,例5.5 求Fibonacci数列的前40个数。该数列的生成方法为:F1=1,F2=1,Fn=Fn-1+Fn-2(n=3),即从第3个数开始,每个数等于前2个数之和。 算法设计,请参见第2章第1节(2.1)。参考源程序如下:/*案例代码文件名:AL5_5.C*/main() long int f1=1,f2=1; /*定义并初始化数列的头2个数*/ int i=1;/*定义并初始化循环控制变量i*/ for( ; i=20; i+ ) /*1组2个,20组40个数*/ printf(“%15ld%15ld”, f1, f2); /*输出当前的2个数*/ if(i%2=0。

12、) printf(“n”); /*输出2次(4个数),换行*/ f1 += f2; f2 += f1; /*计算下2个数*/ 程序演示,例5.6 输出10100之间的全部素数。所谓素数n是指,除1和n之外,不能被2(n-1)之间的任何整数整除。 算法设计要点: (1)显然,只要设计出判断某数n是否是素数的算法,外面再套一个for循环即可。 (2)判断某数n是否是素数的算法:根据素数的定义,用2(n-1)之间的每一个数去整除n,如果都不能被整除,则表示该数是一个素数。 判断一个数是否能被另一个数整除,可通过判断它们整除的余数是否为0来实现。 参考源程序如下: main() int i=11, j。

13、, counter=0; for( ; i=100; i+=2) /*外循环:为内循环提供一个整数i*/, for(j=2; j= i ) /*整数i是素数:输出,计数器加1*/ printf(“%6d”,i); counter+; 程序演示 思考题:外循环控制变量i的初值从11开始、增量为2的作法有什么好处?为提高运行速度,如何优化内循环?(提示:从减少计算次数角度来考虑) Return,良好的源程序书写习惯注释(续),(3)循环结构 在C语言中,循环结构由循环语句for、while和do.while来实现。 作为注释,应在它们的前面说明其功能,在循环条件判断语句行的后面,说明循环继续条件的含义,如下所示。 1)for语句 /*功能*/ for(变量初始化;循环条件;变量增值) /*循环继续条件的含义*/ ,2)while语句 /*功能说明*/ while(循环条件)/*循环继续条件的含义*/ 3)do.while语句 /*功能说明*/ do while(循环条件);/*循环继续条件的含义*/ 如果循环嵌套,还应说明每层循环各控制什么。 Return。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值