C语言字符表达式作循环条件,C语言程序设计第6章(循环控制).ppt

《C语言程序设计第6章(循环控制).ppt》由会员分享,可在线阅读,更多相关《C语言程序设计第6章(循环控制).ppt(29页珍藏版)》请在装配图网上搜索。

1、第六章 循环控制,本章要点: 建立循环程序设计的基本概念和逻辑思维 掌握C语言循环程序设计的方法,6.1 概述 1.引入循环控制语句的作用 当满足一定条件时,重复执行一段程序. 2.设置循环需要考虑的问题 循环初值; 循环条件的设置;循环体应包括的语句;循环条件的修改。 3.C语言中可用以下语句实现循环 循环结构主要有: (1)用goto语句和if语句构成循环; (2)用while语句; (3)用do-while语句; (4)用for语句。,6.2 goto语句以及用goto语句构成循环,一般形式: goto 标号; 标号:语句 其中:标号用标识符表示,即由字母、数字和下划线组成,且首字符必须。

2、为字母或下划线。不能用整数来作标号。 用途: 1. 与if语句一起构成循环结构。 2. 从循环体中跳到循环体外(一般指最深层)。 3. 改变程序自上而下的执行顺序。,缺点:滥用goto语句,可使程序无规律、可读性差。,例6.1 用if语句和goto语句构成循环,求和 s=1+2+100 main( ) int i,sum=0; i=1; loop: if(i=100) sum=sum+i; i+; goto loop; printf(“%d”,sum); ,6.3 while语句,一般形式: while (表达式) 语句 功能:当表达式为非0值时,执行while语句中的内嵌语句。 特点:先判断。

3、表达式,后执行语句。 流程图:,说明: (1)执行while循环语句时,如果表达式的值第一次计算就等于0,则循环体一次也不执行。 (2)发生下列情况之一时,while循环结束执行: 表达式的值为0; 循环体内遇到break语句; 循环体内遇到goto 语句,且与该goto语句配合 使用的标号所指定的语句在本循环体外; 循环体内遇到return语句,此时退出while循环后,执行的流程从包含该while语句的函数返回到调用函数。,例6.2 求 main( ) int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(“%d”,sum); ,i=1,。

4、sum=0,i=100?,sum=sum+i i=i+1,零,非零,说明: 1)循环体中如果包含一个以上的语句,应该用花括 号括起来; 2)在循环体中应有使循环趋于结束的语句,避免进 入死循环;在本例中,设置循环条件为i100,然后语句中有出i+,这样就不会出现死循环。,6.4 do-while语句,一般形式: do 循环体语句 while (表达式); 特点:先执行循环体,然后判断条件是否成立, 成立继续执行,否则退出循环; 流程图:,例 6.3用do-while语句求 main( ) int i,sum=0; i=1; do sum=sum+i; i+; while(i=100); pri。

5、ntf(“%d”,sum); ,表达式=0?,语句,零,非零,i=100?,sum=sum+i i=i+1,i=1,while语句与do-while语句之间的区别和相同点 1)do-while语句结构可以转换成while结构,可以认为do-while结构是由一个语句加一个while结构构成; 2)当while后的表达式为真时,while语句 和dowhile语句的结果相同,但是对于while后面的表达式一开始就为0值,两种循环的结果不同;,main( ) int i , s=0; scanf(“%d”, 输入:1 打印:55 输入:11 打印:0,main( ) int i , s=0; sc。

6、anf(“%d”, 输入:1 打印:55 输入:11 打印:11,6.5 for语句,for语句的一般形式为: for(表达式1;表达式2;表达式3) 语句 执行过程流程图:,表达式1,表达式2,真,语句,表达式3,假,for语句的 下一语句,例:for(i=1;i=100;i+) sum=sum+i,i=1,i=100,真,sum=sum+i,i+,假,它相当于 i=1; while(i=100) sum=sum+i; i+; ,说明: (1)for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值。比如: for(i=1;i=100;i+) sum=sum+i 。

7、; 可写为: i=1; for( ;i=100;i+) sum=sum+i ; (2)表达式2不能省略,否则会导致死循环;,(3)表达式3可以省略,但此时应另外设法保证循环能正常结束。比如: for(i=1;i=100;i+) sum=sum+i ; 可写为: for(i=1;i=100; ) sum=sum+i ; i+ ; ,(4)表达式1可以为设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他变量表达式。此外表达式1和表达式3还可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。 例: for( sum = 0; i = 100; i+) sum = sum + i ;。

8、 for( i=0, j=100; i=j; i+, j - -) k = i + j ;,(5)表达式2一般是关系表达式或逻辑表达式,也可以为数值表达式或字符表达式,只要其值为非零,就执行循环体。 例: for( ; (c = getchar( ) != n; ) printf(“%c”, c); 此句的作用是每读入一个字符后输出该字符,直到输入一个“换行符”为止。 (6)for语句简单、方便,使用灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定只给出循环结束条件的情况,它完全可以取代while和do while语句。,6.6 循环的嵌套,C语言中,允许三种循环(whil。

9、e循环、do-while循环和for循环)相互嵌套和进行多层嵌套。下面几种都是合法的嵌套形式:,for( ; ; ) while( ) for循环体嵌套while循环体,for( ; ; ) for( ; ; ) for循环体嵌套for循环,do do while( ); while( ); do_while循环体 嵌套do_while循环,while( ) do while( ); while循环体嵌套 do_while循环,while( ) for( ; ; ) while循环体嵌套for循环,do for( ; ; ) while( ); do_while循环体嵌套for循环,例7:fo。

10、r 语句的循环嵌套例子。,for(i=1; i=2; i+) for(j=1; j=2; j+) printf(“%3d”, i+j); printf(“n”); output: 2 3 3 4,for( i =1; i = 2; i+) for( j=1; j=2; j+) printf(“%3d”,i+j); printf(“n”); output: 2 3 3 4,6.8 break语句和continue语句,6.8.1 break语句 break语句的一般形式: break; 作用:只能用于循环语句和switch语句,用来从循环体内跳出循环体,以提前结束循环。 例: for(r = 1。

11、; r 100) break; printf(“%f”, area); ,6.8.2 continue语句 一般形式: continue; 作用:结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。 contiune语句和break语句的区别是: contiune语句只是终止本次循环,不是终止整个循环,而break语句是结束整个循环; 详细的流程图分析,可参见教科书.,例6.5 把100200之间的不能被3整除的数输出; main( ) int n; for (n = 100; n = 200; n+) if (n%3 = 0) continue; printf(。

12、“%d”,n); ,6.9 程序举例,例 6.6 用 求 的近似值,直到最后一项的绝对值小于10-6为止。下为N-S流程图和程序。,#include main( ) int s; float n, t, pi; t = 1; pi = 0; n = 1.0; s = 1; while( (fabs(t) 1e-6 ) pi = pi + t; n = n + 2; s = -s; t = s / n; pi = pi * 4; printf(“pi=%10.6fn”, pi); ,例6.7 求Fibonacci数列的40个数。 Fibonacci数列为:,main ( ) long int f。

13、1, f2; int i; f1 = 1; f2 = 1; for( i =1; i = 20; i+) printf(“%12ld %12ld”, f1, f2); if ( i%2 = 0 ) printf(“n”); f1 = f1 + f2; f2 = f2 + f1; ,1, 1, 2, 3, 5, 8, 13, ,例6.8 判断m是否为素数。 分析:判断一个数是否为素数,通常的做法是让这个数被从2到它的平方根(取整)的数除,如果能被其中任何一个数整除,则该数不是素数。,#include main( ) int m, i, k; scanf( “%d”, ,例6.9在此基础上提出 求素数的范围,这种 情况可嵌套一个for 循环即可处理。,例6.10 译密码。对字符的处理办法为: 先判定它是否为大写字符或小写字符,若是,则将其值加4,变成其后的第四个字母。如果加4后字符值大于Z或z,则在加4后再减去26,转换为字母表前面的字母。,#include main( ) char c; while(c=getchar( )!=n) if (c=a。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值