第三章分支和循环课件

上传人:我*** 文档编号:141177791 上传时间:2020-08-05 格式:PPT 页数:107 大小:215KB
返回 下载 相关 举报
第三章分支和循环课件_第1页
第1页 / 共107页
第三章分支和循环课件_第2页
第2页 / 共107页
第三章分支和循环课件_第3页
第3页 / 共107页
第三章分支和循环课件_第4页
第4页 / 共107页
第三章分支和循环课件_第5页
第5页 / 共107页
点击查看更多>>
资源描述

《第三章分支和循环课件》由会员分享,可在线阅读,更多相关《第三章分支和循环课件(107页珍藏版)》请在金锄头文库上搜索。

1、第三章 分支和循环,分支结构,一、程序结构的分类: (1)顺序:,(2)分支: 二选一(if), 多选一( switch),(3)循环:while语句, for ,do while,(4)子程序:函数 function,主程序,子程序一,子程序二,二、结构化程序设计 模块化、自顶向下,逐步求精,if语句,1、作用: 通过对给定的条件(表达式)进行判断,决定所要执行的操作。 2、语句格式 (1)格式一 : if (表达式) 语句 含义:,例: if(ab)max=a; if (a=0) x=sqrt(a); (2) 格式二 if (表达式) 语句1 else 语句2 含义:,例: 输入两个数a和

2、b,输出其中较大者。 main( ) int a,b,max; scanf(%d%d, ,例:输入一个实数a,若a 不是负值, 输出a 的平方根,否则输出a的平方。 #include “math.h” main() float a; if (a=0) printf(“a=%f”,sqrt(a); else printf(“a=%f”,a*a); ,例:输入一个三位数,判断它 是否是“水仙花数”。,main() int n,a,b,c,d; scanf(”n=%d”, scanf(“%f %f %f”, ,4、注意,(1)if (ab) max=a; else max=b; 各有一个分号 (2)

3、复合语句的作用 后不能加;号 (3)else子句是不能单独使用,必须与if配对使用。 (4)格式一:“做”或者“不做” 格式二:“做这件事”或“做那件事”,(五)if 语句的嵌套,1、定义:在if语句中又包含一个或多个if语句。 例: if(b1) s1 else if (b2) s2 else s3,例: if ( ) if ( ) 语句1 else 语句2 内嵌if else if ( ) 语句3 else 语句4 内嵌if,规定:else总是与它上面最近的(未曾配对的)if配对。,例: if ( ) if ( ) 语句1 else 语句2,用复合语句改变配对 if ( ) if ( )

4、语句1 else 语句2,例:编写一个程序,输入一个x值, 按下述函数关系输出y的值。 1 (x0),main( ) int x,y; scanf(%d, ,switch语句,1、一般格式: switch (表达式) case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default :语句n+1 其中,default部分可以缺省。,例: switch(n) case 1: x=11; case 2: x=21; default: x=31; 当n=1时, x=31; 当n=2时, x=31; 其它, x=31;,例:,switch(n) case

5、1: x=11; break; case 2: x=21; break; default: x=31; x的结果值或者等于11,或者等于21,或者等于31。,例:多个case可以共用一组执行语句,如: switch(n) case 1: case 2: case 3: x=31; break; case 4: 当n等于1或2或3时,都执行“x=31”这条语句,并跳出switch。,2、注意,(1)switch语句的表达式和常量表达式可以为任何类型(ANSI),一般为整型、字符型或枚举类型。 (TC中若switch语句的表达式为实型,系统自动截尾;常量表达式为实型,系统报错) (VC中若swit

6、ch语句的表达式为实型,系统报错;常量表达式为实型,系统报错) (2)同一个switch语句中的所有case后面的常量表达式的值,都必须互不相同。 (3)switch语句中的各个case和default的出现次序不影响执行结果,default可以在case的前面、中间或最后。,3、注意(续),(4) 由于switch语句中的“case常量表达式”部分只起语句标号的作用,而不进行条件判断,因此,在执行完一个case后面的语句后,流程控制自动转到下一个case继续执行,直到遇到switch语句的右花括号或“break”语句为止。 (5) 尽管case后面的语句多于一个,却不必用花括号括起来。 (6

7、) 多个case可以共用一组执行语句。,例: 设今天是星期三(Wednesday),那么t天以后是星期几?要求输出星期几的英文名称。(switch 实现),main( ) int t; scanf(“%d”, ,例: 上题用if语句 实现。,main( ) int t; scanf(“%d”, ,例: 从键盘中输入三个数, 找出其中的最大数。,(1)用条件运算符实现。 main( ) int a,b,c,max; printf(Please input a,b,c:); /*此句用于提示用户输入数据*/ scanf(%d%d%d, ,(2)用if语句实现,main( ) int a,b,c,m

8、ax; printf(Please input a,b,c:); scanf(%d%d%d, ,(year%4=0 printf(“Please input year and month:”); scanf(“%d %d”, ,例:将a,b,c,d四个整数按从 小到大的顺序排列后输出。,main( ) int a,b,c,d,temp; printf(Please input a,b,c,d: ); scanf(%d,%d,%d,%d, ,循环控制结构,求解某问题时,往往遇到具有规律性的重复计算,完成这些计算,通常需要反复执行同一程序段。为了描述这种现象,C语言专门提供了三种循环语句:whil

9、e语句、do-while语句和for语句。,一、while语句,1、一般格式: while (表达式) 语句 其中,语句(称为循环体)只能是一条语句,若为多个语句,要用“ ”将它们括起来,形成复合语句。,2、while语句流程图,例: 编程求1到100之间所有整数的和。,main( ) int n,sum=0; n=1; while(n=100) sum=sum+n; n=n+1; printf(1+2+3+100=%dn,sum); ,这是一个典型的计算累加和的示例,循环体中要对100个数进行累加,累加器(变量sum)在进行循环之前必须先“清0”(这里采用定义时赋初值0的办法进行清0的)。先

10、清0,再循环累加,这种“累加模式”,一定要记住。,3、注意,(1)判别表达式中涉及到的变量必须在循环开始前先赋值; (2)循环体中必须有修改判别表达式E的值的语句(如上例中的n=n+1),并最终使判别表达式的值为0(上例中n的超过100时,n=100的值为0),否则循环永不结束,成为“死循环”; (3)循环体中不止一条语句时,要用 复合。 (4)while语句的循环体执行次数可以是0到多次。,例:编程求出一批学生的总成绩、人数和平均成绩。,main( ) float x, sum=0; int n=0; scanf(“%d”, ,例:从键盘读入若干个字符(以 while(ch!= ,二、for

11、语句,1、一般格式: for(表达式1;表达式2;表达式3) 语句,2、for的流程图,例:编程求1到100之间所有 整数倒数的和。,main( ) int n; double sum=0; for(n=1;n=100;n+) sum+=1/n; printf( “1/1+1/2+1/3+1/100=%fn”,sum); ,3、注意,(1)E1,E2,E3是任意表达式,它们之间用分号隔开(注意,不是逗号); (2)若循环体中含有多条语句,必须用“ ”括起来构成复合语句; (3)判别表达式中涉及到的变量必须在循环开始前先赋值; (4)for语句的循环体执行次数可以是0到多次。,4、for与whi

12、le的关系,(1)将for语句“翻译”成while语句为: E1; while (E2) S; /for的循环体 E3; (2)while语句也可以翻译成for语句,即 while (E) S; 相当于 for (; E; ) S;,5、for的几种“灵活”用法,(1)初始表达式1的灵活用法 a)使用逗号表达式,可以一次设置多项初始条件,例: for(n=1,sum=0;n=100;n+) sum+=1/n; b)如果进入for循环之前,已经设置了初始条件,那么E1即可省略,例: n=1;sum=0; for(;n=100;n+) sum+=1/n; 注意尽管E1省略,但E1后面的分号仍不能少

13、。,(2) 判别表达式2的灵活用法,a)判别表达式2可以省略,由于循环条件“永远”满足,通常要在循环体中设置结束循环的条件和语句(比如用if加break语句终止循环),否则循环真的永不休止,形成“死循环”。 例如: for(n=1, sum=0; ;n+) if (n100) break; else sum+=1/n;,b)判别表达式2除关系表达式和逻辑表达式,还可以是数值表达式或字符表达式,例如: for( x=10 ; x ; x-) ; 相当于 x=10; while (x) ; x-; ,(3)后置表达式E3的灵活用法,a)E3省略,将其功能放在循环体中。例如: for(n=1, su

14、m=0;n=100; ) sum+=1/n+; b)将循环体中的处理语句放在E3中“顺带”执行,例如: for(sum=0,n=1;n=100;sum+=1/n+) ; /循环体是一条空语句 或 for(sum=0,n=1;n=100; sum+=1/n,n+) ;,(4) 三个表达式都省略,极端情况下,形如: for ( ; ; ) S; 相当于 WHILE(1) S;,例如: for( ; (c=getchar( )= ; ) ; “=”后面是一个空格字符,循环体是空语句。该语句的功能是“过滤空格”,即反复读字符赋给变量c,直到读一个非空格字符为止。,例:从键盘键入“Q”或“q”表示退出,

15、否则“I”(插入)“D”(删除)“S”(查找)的主控制程序。,for ( ; ; ) ch=getchar( ); switch (ch) case Q: case q:exit(0); case i: case I: insert(); break; case D: case d:delete(); break; case s: case S: search(); break; ,例:计算,n=1 x=1; sum=sum+1/x; n=2 x=1*2; n=3 x=1*2*3; n=100 x=1*2*3* *100; 迭代公式: x=x*n;,#include “stdio.h” main( ) int n; double x, sum=0; x=1; for(n=1;n=100;n+) x=x*n; sum+=1/x; /循环累加 printf( “sum=%fn”,sum); ,三、do-while语

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号