C语言讲义第03章-控制语句.ppt
《C语言讲义第03章-控制语句.ppt》由会员分享,可在线阅读,更多相关《C语言讲义第03章-控制语句.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章第三章控制语句控制语句 C语言程序设计主要内容主要内容控制语句简介ifelse语句 SwitchCase for语句while、dowhile语句break、continue语句 特别的goto语句多重循环 小结控制语句控制语句控制语句是C语言中非常重要的语句,用来实现结构程序设计中的选择和循环结构。语言主要有八种控制语句。可分成以下三类:(1)选择控制语句:ifelse语句,switchcase语句(2)循环控制语句:for语句,while语句,do while语句(3)转移控制语句:break语句,continue语句,goto语句3.1ifelse语句语句ifelse语句判定所给的
2、条件是否满足,根据判定的结果选择执行两种操作之一执行。ifelse 语句的三种形式if(表达式)语句if(表达式)语句1else 语句2if(表达式1)语句1else if(表达式2)语句2else if(表达式3)语句3else if(表达式n)语句nelse 语句n+1形式1:if(表达式)语句功能:这种形式的语句无else部分,它的功能是首先对表达式进行求解,若表达式的值为非0,则执行语句;若表达式的值为0,则该语句不起作用,不执行,而继续执行if语句下面的语句。例如:if(ab)printf(the max is%d,a);当ab为真时,打印输出a的值,否则什么也不执行。3.1 ife
3、lse语语句句三种形式之一三种形式之一exprstatement非0=0形式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语语句句三种形式之二三种形式之二exprstatement1statement2非0=0形式3:if(表达式1)语句1else if(表达式2)语句2else if(表达式3)语句3else if(表达式n)语句n
4、else 语句n+13.1 ifelse语语句句三种形式之三三种形式之三expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0功能:依次判断表达式的值,当出现某个值为非0时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n+1。然后继续执行后续程序。前二种形式的ifelse语句一般都用于两个分支的情况。当有多个分支选择时,可采用第3种形式ifelse语句。例如:if(grade=80)printf(A);else if(grade=70)printf(B);else if(gr
5、ade=60)printf(C);else printf(D);3.1 ifelse语语句句三种形式之三三种形式之三注意事项:1、在if 后面的表达式,其类型可以是任意的其类型可以是任意的(整形、实型、字符型、指针型),C C语言在判断时只要非语言在判断时只要非0 0,就认为是真,按,就认为是真,按真处理,只有真处理,只有0 0时才认为是假,按假处理。时才认为是假,按假处理。因此,而不仅仅限于逻辑表达式或关系表达式。3.1 ifelse语语句句注意事项注意事项如:if(a=b&x=y)printf(“a=b,x=y”);if(3)printf(“OK”);if(a)printf(“%d”,a)
6、;2、C语句必须在最后出现分号,分号是语句中不可缺少的一部分,因此if和else后面的语句都必须有分号。例如:if(ab)printf(the max is%d,a);else printf(the max is%d,b);3.1 ifelse语语句句注意事项注意事项3.1 ifelse语语句句注意事项注意事项u语句可以是复合语句u if(x)if(x!=0)if(!x)if(x=0)u在每个else前面有一分号,整个语句结束处有一分号u在 if 或 else 后可有多个操作语句,此时需加 将几个语句括起来成为一个复合语句。例 考虑下面程序的输出结果:#include main()int x,
7、y;scanf(“%d,%d”,&x,&y);if(xy)x=y;y=x;else x+;y+;printf(“%d,%dn”,x,y);Compile Error!例3.1 接收任意输入的两个实数,按从大到小的顺序输出。程序如下:3.1 ifelse语语句句举例举例例3.3 要求判别键盘输入字符的类别。可以根据输入字符的ASCII码来判别类型。由ASCII码表可知ASCII值小于32的为控制字符。在0和9之间的为数字,在A和Z之间为大写字母,在a和z之间为小写字母,其余则为其它字符。这是一个多分支选择的问题,可采用第3种形式的.程序如下:3.1 ifelse语语句句举例举例/*lt03_03
8、.c*/#include void main()char c;printf(Enter a character:);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 characte
9、r:D The character is a capital letter运行:Enter a character:h The character is a lower letter运行:Enter a character:F1 The character is other charactervIf 语句嵌套:在一个if语句中又包含一个或多个if语句。l一般形式:if(expr1)if(expr2)statement1 else statement2else if(expr3)statement3 else statement4内嵌if内嵌ifif(expr1)if(expr2)stateme
10、nt1 else statement2内嵌ifif(expr1)if(expr2)statement1else statement3 内嵌ifif(expr1)statement1else if(expr3)statement3 else statement4内嵌if注意事项:注意事项:if else 配对原则:缺省 时,else总是和它上面离它最近的未配对的if配对if()if()if()else.else.else.3.1.2ifelse语语句句嵌套嵌套例:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);修改:if(a=b)if(b=c)
11、printf(“a=b=c”);else printf(“a!=b”);实现if else 正确配对方法:加 例 考虑下面程序输出结果: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例 3.5有一函数如下:y=写一程序,输入x,输出y的值。程序如下:3.1.2ifelse语语句句嵌套注意事项嵌套注意事项x(x 4)2x-1(4 x b)?a:b 它等价于:if(ab)max=a;else max=b;说明:(
12、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)这也就是条件表达式嵌套的情形,即其中的表达式3又是一个条件表达式。如果a=2,b=3,c=4,d=5,则条件表达式的值为5条件运算符条件运算符?:?:(5)条件表
13、达式不能取代一般的if语句,只有当if语句的表达式为“真”和“假”时,都执行赋值语句并且都给同一个变量赋值时才能代替if语句。(6)表达式1的类型可以与表达式2和表达式3的类型不同;如:a?b:c表达式2和表达式3的类型也可以不同,此时条件表达式的值的类型为二者中较高的类型。例如:ab?3:3.5此时如果ab,则条件表达式的值为3.5,若ab,值应为3,但是由于3.5为实型数据,比整型的数据类型高,因此,将3转换成实型数据3.0,所以当ab时,条件表达式的值为3.0条件运算符条件运算符?:?:例3.7 输入一个字符,如果是小写字母,转换成对应的大写字母,其它字符不变。程序如下:条件运算符条件运
14、算符?:举例?:举例switch语句(开关分支语句)v一般形式:switch(表达式)case E1:语句组 1;break;case E2:语句组 2;break;.case En:语句组 n;break;default:语句组;break;v执行过程:switch表达式语句组1语句组2语句组n语句组.E 1E 2Endefaultcase 3.2 SwitchCase语句语句switch语句说明:Switch后面的表达式允许为任何类型,一般为整形或字符型。当表达式的值与某一个case后面的常量表达式的值相等时,就执行case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值相
15、匹配,就执行default后面的语句。执行完一个case后面的语句后,流程控制转移到下一个case继续执行。(若无break语句)每一个case的常量表达式的值必须互不相等。各个case和default的出现次序影响执行结果。(若无break语句)break语句 为了保证各个 case和default的出现次序不影响执行结果,在case语句后加一break语句。3.2 SwitchCase语句语句例 switch(score)case 5:printf(Very good!”);case 4:printf(“Good!”);case 3:printf(“Pass!”);case 2:print
16、f(“Fail!”);default :printf(“data error!”);/*switch1.c*/运行结果:score为5时,输出:Very good!Good!Pass!Fail!data error!3.2 SwitchCase语句语句运行结果:a=2,b=1l附加说明:lcase后可包含多个可执行语句,且不必加 lswitch可嵌套l多个case可共用一组执行语句例 void main()int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1:b+;break;case 2:a+;b+;break
17、;case 3:a+;b+;printf(“na=%d,b=%d”,a,b);/*switch2.c*/如:case A:case B:case C:printf(“score60n”);break;.3.2 SwitchCase语句语句例3.8 求一元二次方程ax2+bx+c=0的根。程序分析:一元二次方程ax2+bx+c=0的求根公式为:x=当a=0时,不是二次方程。当a=0,b=0时,方程无解。当a=0,b0时,方程的解为。当a0时,b2-4ac0 有两个不相等的实根。b2-4ac=0 有两个相等的实根。b2-4ac0 有两个复根。程序如下:3.2 多分支程序举例多分支程序举例3.2 多
18、分支程序举例多分支程序举例例 3.9写程序,判断某一年是否是闰年。分析:能被4整除但不能被100整除的是闰年。能被4、100、400同时整除的也是闰年。程序如下:例 3.10四则运算求值:判断运算符,然后输出运算值。当输入运算符不是+,-,*,/时给出错误提示。程序如下:for循环使用灵活,功能很强,不仅可用来表示循环次数已知的情况,而且也可以用于循环次数不确定只给出循环终止条件的情况。for语句的一般形式:一般形式:执行过程:执行过程:3.3 for语句语句for(expr1;expr2;expr3)循环体语句;expr2循环体假(0)真(非0)forexpr1expr3例3.12 编写程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 讲义 03 控制 语句
限制150内