第03章控制语句PPT讲稿.ppt
《第03章控制语句PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第03章控制语句PPT讲稿.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第03章控制章控制语句句第1页,共63页,编辑于2022年,星期日主要内容主要内容控制语句简介ifelse语句 SwitchCase for语句while、dowhile语句break、continue语句 特别的goto语句多重循环 小结第2页,共63页,编辑于2022年,星期日控制语句控制语句控制语句是C语言中非常重要的语句,用来实现结构程序设计中的选择和循环结构。语言主要有八种控制语句。可分成以下三类:(1)选择控制语句:ifelse语句,switchcase语句(2)循环控制语句:for语句,while语句,do while语句(3)转移控制语句:break语句,continue语句
2、,goto语句第3页,共63页,编辑于2022年,星期日3.1ifelse语句语句ifelse语句判定所给的条件是否满足,根据判定的结果选择执行两种操作之一执行。ifelse 语句的三种形式if(表达式)语句if(表达式)语句1else 语句2if(表达式1)语句1else if(表达式2)语句2else if(表达式3)语句3else if(表达式n)语句nelse 语句n+1第4页,共63页,编辑于2022年,星期日形式1:if(表达式)语句功能:这种形式的语句无else部分,它的功能是首先对表达式进行求解,若表达式的值为非0,则执行语句;若表达式的值为0,则该语句不起作用,不执行,而继续
3、执行if语句下面的语句。例如:if(ab)printf(the max is%d,a);当ab为真时,打印输出a的值,否则什么也不执行。3.1 ifelse语句语句三种形式之一三种形式之一exprstatement非0=0第5页,共63页,编辑于2022年,星期日形式2:if(表达式)语句1 else 语句2功能:首先对表达式进行求解,若表达式的值为非0,则执行语句1,否则执行语句2。例如:if(ab)printf(the max is%d,a);else printf(the max is%d,b);当ab为真时,打印输出a的值,否则打印输出b的值。3.1 ifelse语句语句三种形式之二三
4、种形式之二exprstatement1statement2非0=0第6页,共63页,编辑于2022年,星期日形式3:if(表达式1)语句1else if(表达式2)语句2else if(表达式3)语句3else if(表达式n)语句nelse 语句n+13.1 ifelse语句语句三种形式之三三种形式之三expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0第7页,共63页,编辑于2022年,星期日功能:依次判断表达式的值,当出现某个值为非0时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为
5、假,则执行语句n+1。然后继续执行后续程序。前二种形式的ifelse语句一般都用于两个分支的情况。当有多个分支选择时,可采用第3种形式ifelse语句。例如:if(grade=80)printf(A);else if(grade=70)printf(B);else if(grade=60)printf(C);else printf(D);3.1 ifelse语句三种形式之三语句三种形式之三第8页,共63页,编辑于2022年,星期日注意事项:1、在if 后面的表达式,其类型可以是任意的其类型可以是任意的(整形、实型、字符型、指针型),C C语言在判断时只要非语言在判断时只要非0 0,就认为是真,
6、按真处理,只有,就认为是真,按真处理,只有0 0时时才认为是假,按假处理。才认为是假,按假处理。因此,而不仅仅限于逻辑表达式或关系表达式。3.1 ifelse语句语句注意事项注意事项如:if(a=b&x=y)printf(“a=b,x=y”);if(3)printf(“OK”);if(a)printf(“%d”,a);第9页,共63页,编辑于2022年,星期日2、C语句必须在最后出现分号,分号是语句中不可缺少的一部分,因此if和else后面的语句都必须有分号。例如:if(ab)printf(the max is%d,a);else printf(the max is%d,b);3.1 ifel
7、se语句语句注意事项注意事项第10页,共63页,编辑于2022年,星期日3.1 ifelse语句语句注意事项注意事项u语句可以是复合语句u if(x)if(x!=0)if(!x)if(x=0)u在每个else前面有一分号,整个语句结束处有一分号u在 if 或 else 后可有多个操作语句,此时需加 将几个语句括起来成为一个复合语句。例 考虑下面程序的输出结果:#include main()int x,y;scanf(“%d,%d”,&x,&y);if(xy)x=y;y=x;else x+;y+;printf(“%d,%dn”,x,y);Compile Error!第11页,共63页,编辑于20
8、22年,星期日例3.1 接收任意输入的两个实数,按从大到小的顺序输出。程序如下:3.1 ifelse语句举例语句举例第12页,共63页,编辑于2022年,星期日例3.3 要求判别键盘输入字符的类别。可以根据输入字符的ASCII码来判别类型。由ASCII码表可知ASCII值小于32的为控制字符。在0和9之间的为数字,在A和Z之间为大写字母,在a和z之间为小写字母,其余则为其它字符。这是一个多分支选择的问题,可采用第3种形式的.程序如下:3.1 ifelse语句举例语句举例/*lt03_03.c*/#include void main()char c;printf(Enter a characte
9、r:);c=getchar();if(c=0&c=A&c=a&c=z)printf(The character is a lower lettern);else printf(The character is other charactern);运行:Enter a character:The character is a control character运行:Enter a character:8 The character is a digit运行:Enter a character:D The character is a capital letter运行:Enter a charac
10、ter:h The character is a lower letter运行:Enter a character:F1 The character is other character第13页,共63页,编辑于2022年,星期日If 语句嵌套:在一个if语句中又包含一个或多个if语句。一般形式:if(expr1)if(expr2)statement1 else statement2else if(expr3)statement3 else statement4内嵌if内嵌ifif(expr1)if(expr2)statement1 else statement2内嵌ifif(expr1)if
11、(expr2)statement1else statement3 内嵌ifif(expr1)statement1else if(expr3)statement3 else statement4内嵌if第14页,共63页,编辑于2022年,星期日注意事项:注意事项:if else 配对原则:缺省 时,else总是和它上面离它最近的未配对的if配对if()if()if()else.else.else.3.1.2ifelse语句嵌套语句嵌套第15页,共63页,编辑于2022年,星期日例:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);修改:if(a
12、=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);实现if else 正确配对方法:加 第16页,共63页,编辑于2022年,星期日例 考虑下面程序输出结果:#include void main()int x=100,a=10,b=20;int v1=5,v2=0;if(ab)if(b!=15)if(!v1)x=1;else if(!v2)x=10;x=-1;printf(“%d”,x);/*ifz.c*/结果:-1第17页,共63页,编辑于2022年,星期日例 3.5有一函数如下:y=写一程序,输入x,输出y的值。程序如下:3.1.2ifelse语句
13、语句嵌套注意事项嵌套注意事项x(x 4)2x-1(4 x b)?a:b 它等价于:if(ab)max=a;else max=b;说明:(1)条件运算符是一个三目运算符,即有三个参与运算的量,它是C语言中唯一的一个三目运算符。(2)条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。因此 max=(ab)?a:b可以去掉括号而写为 max=ab?a:b,如果有 ab?a:b+1 则它等价于:ab?a:(b+1)。(3)条件运算符?和:是一对运算符,不能分开单独使用。(4)条件运算符的结合方向是自右至左。ab?a:cd?c:d应理解为ab?a:(cd?c:d)这也就是条件表达式嵌套的情
14、形,即其中的表达式3又是一个条件表达式。如果a=2,b=3,c=4,d=5,则条件表达式的值为5条件运算符条件运算符?:?:第20页,共63页,编辑于2022年,星期日(5)条件表达式不能取代一般的if语句,只有当if语句的表达式为“真”和“假”时,都执行赋值语句并且都给同一个变量赋值时才能代替if语句。(6)表达式1的类型可以与表达式2和表达式3的类型不同;如:a?b:c表达式2和表达式3的类型也可以不同,此时条件表达式的值的类型为二者中较高的类型。例如:ab?3:3.5此时如果ab,则条件表达式的值为3.5,若ab,值应为3,但是由于3.5为实型数据,比整型的数据类型高,因此,将3转换成实
15、型数据3.0,所以当ab时,条件表达式的值为3.0条件运算符条件运算符?:?:第21页,共63页,编辑于2022年,星期日例3.7 输入一个字符,如果是小写字母,转换成对应的大写字母,其它字符不变。条件运算符条件运算符?:举例?:举例#include void main()char ch;scanf(%c,&ch);ch=(ch=a&ch 60n”);break;.3.2 SwitchCase语句语句第26页,共63页,编辑于2022年,星期日例3.8 求一元二次方程ax2+bx+c=0的根。程序分析:一元二次方程ax2+bx+c=0的求根公式为:x=当a=0时,不是二次方程。当a=0,b=0
16、时,方程无解。当a=0,b0时,方程的解为x=-c/b。当a0时,b2-4ac0 有两个不相等的实根。b2-4ac=0 有两个相等的实根。b2-4ac0 有两个复根。程序如下:3.2 多分支程序举例多分支程序举例第27页,共63页,编辑于2022年,星期日3.2 多分支程序举例多分支程序举例例 3.9写程序,判断某一年是否是闰年。分析:能被4整除但不能被100整除的是闰年。能被4、100、400同时整除的也是闰年。程序如下:例 3.10四则运算求值:判断运算符,然后输出运算值。当输入运算符不是+,-,*,/时给出错误提示。程序如下:#include void main()int iyear;p
17、rintf(please input a year:);scanf(%d,&iyear);if(iyear%4=0&iyear%100!=0)|(iyear%400=0)printf(%d is a leap yearn,iyear);else printf(%d not a leap yearn,iyear);例 3.10四则运算求值:判断运算符,然后输出运算值。当输入运算符不是+,-,*,/时给出错误提示。程序如下:#include void main()float fa,fb,fs;char cc;printf(input expression:a,+(-,*,/),b:);scanf(
18、%f,%c,%f,&fa,&cc,&fb);switch(cc)case+:printf(%6.4fn,fa+fb);break;case-:printf(%6.4fn,fa-fb);break;case*:printf(%6.4fn,fa*fb);break;case/:printf(%6.4fn,fa/fb);break;default:printf(input errorn);第28页,共63页,编辑于2022年,星期日for循环使用灵活,功能很强,不仅可用来表示循环次数已知的情况,而且也可以用于循环次数不确定只给出循环终止条件的情况。for语句的一般形式:一般形式:执行过程:执行过程:
19、3.3 for语句语句for(expr1;expr2;expr3)循环体语句;expr2循环体假(0)真(非0)forexpr1expr3第29页,共63页,编辑于2022年,星期日例例3.12 编写程序计算编写程序计算1+2+3+100的和。的和。3.3 for语句语句#include void main()int is,ii;is=0;for(ii=1;ii=100;ii+)is=is+ii;printf(the sum is%dn,is);第30页,共63页,编辑于2022年,星期日for循环最简单也就是最容易理解的形式如下:for(for(循环变量赋初值;循环条件;循环变量增值循环变量
20、赋初值;循环条件;循环变量增值)循环体语句;循环体语句;说明:(1)for语句一般形式中的表达式1可以省略,注意省略表达式1 时,其后的分号是不能省略的,省略后的一般形式如下:for(;表达式表达式2;表达式表达式3)没有了表达式1,此时就没有了给循环变量赋初值的操作,一般情况下程序设计者应在for语句之前给循环变量赋初值。例如:ii=1;for(;ii=100;ii+)isum+=ii;printf(“isum=%d”,isum);3.3 for语句语句说明说明1第31页,共63页,编辑于2022年,星期日(2)for语句一般形式中的表达式2也可以省略,注意省略时,其后的分号是不能省略的,省
21、略后的一般形式如下:for(表达式1;表达式3)没有了表达式2,此时就没有了循环判断条件,循环会无止境的执行下去,相当于表达式2始终为真。此时程序设计者可采用我们以后要讲的break语句强制结束循环。例如:for(ii=1;ii+)isum+=ii;printf(“isum=%d”,isum);3.3 for语句语句说明说明2第32页,共63页,编辑于2022年,星期日(3)表达式3也可以省略,省略后的一般形式如下:for(表达式1;表达式2;)此时没有了循环变量增值的操作,为了保证循环能正常结束,一般情况下程序设计者应在循环体内改变循环变量的值。例如:for(ii=1;ii=100;)isu
22、m+=ii;printf(“isum=%d”,isum);3.3 for语句语句说明说明3第33页,共63页,编辑于2022年,星期日(4)表达式1和表达式3可以同时省略,省略后的一般形式如下:for(;表达式2;)此时的for循环相当于我们以后要讲的while循环,程序设计者应在for语句之前给循环变量赋初值,在循环体内改变循环变量的值。3.3 for语句语句说明说明4第34页,共63页,编辑于2022年,星期日(5)表达式)表达式1、表达式、表达式2和表达式和表达式3都可以省略,省略都可以省略,省略后的一般形式如下后的一般形式如下:for(for(;)此时程序设计者应在此时程序设计者应在f
23、orfor语句之前给循环变量赋初值,在循环体内改变循语句之前给循环变量赋初值,在循环体内改变循环变量的值,强制结束循环。环变量的值,强制结束循环。(6)表达式)表达式1和表达式和表达式3也可以是逗号表达式。也可以是逗号表达式。如:如:for(for(i=0,j=100i=0,j=100;i=j;i=j;i+,j-i+,j-)s=s+i+j)s=s+i+j 这这个循环实现的也是个循环实现的也是1+2+3+1+2+3+100100的功能。的功能。(7)表达式)表达式2的值只要非的值只要非0,就执行循环体。,就执行循环体。例如:例如:for(;for(;(c=getchar()!=n(c=getch
24、ar()!=n;);)在表达式在表达式2 2中中不断从终端接收字符赋给变量不断从终端接收字符赋给变量c c,直到输入一个,直到输入一个“换行换行”为止。为止。3.3 for语句语句说明说明5、6、7第35页,共63页,编辑于2022年,星期日3.3 for语句语句例 3.13 在屏幕上输出1到100,每行输出5个。程序如下:例 3.14将输入的一串字符显示在屏幕上,直到输入字符“!”时停止。程序如下:#include void main()int ii;for(ii=1;ii=100;ii+)printf(%d,ii);if(ii%5=0)printf(n);#include void mai
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 03 控制 语句 PPT 讲稿
限制150内