C语言程序设计语句和控制流.ppt
《C语言程序设计语句和控制流.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计语句和控制流.ppt(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章 语句与控制流 内容提要:内容提要:C语句的分类语句的分类空语句与复合语句空语句与复合语句条件分支语句条件分支语句循环控制语句与嵌套循环控制语句与嵌套执行流程强制转移执行流程强制转移编程常用技巧编程常用技巧 语句分类表语句分类表 空语句与复合语句空语句与复合语句 条件分支语句条件分支语句 循环控制语句循环控制语句 程序示例程序示例 流程强制转移流程强制转移C C语言是一种很好的结构化程序设计语言是一种很好的结构化程序设计语言,它提供了比语言,它提供了比FORTRANFORTRAN、PASCLEPASCLE更丰更丰富的流程控制语句,还提供了将多个语富的流程控制语句,还提供了将多个语句组合成
2、一个语句的复合语句。句组合成一个语句的复合语句。第三章 语句与控制流以上语句添加标号,构成标号语句,以上语句添加标号,构成标号语句,标号语句标号语句forfor循环循环for( ) for( ) 直到型循环直到型循环do do while( ) while( ) 当循环当循环while( ) while( ) 循循环环无条件转移语句无条件转移语句break,continue,return,gotobreak,continue,return,goto多分支选择语句多分支选择语句switchswitch条件分支语句条件分支语句if( )if( )else else 分分支支转转移移流流程程控控制制
3、语语句句花括号括起来的语句花括号括起来的语句复合语句复合语句只有一个分号的语句只有一个分号的语句空语句空语句表达式加分号构成表达式加分号构成表达式语句表达式语句函数调用加分号构成函数调用加分号构成函数调用语句函数调用语句简单的顺简单的顺序执行语序执行语句句以上语句添加标号,构成标号语句,以上语句添加标号,构成标号语句,标号语句标号语句forfor循环循环for( ) for( ) 直到型循环直到型循环do do while( ) while( ) 当循环当循环while( ) while( ) 循循环环无条件转移语句无条件转移语句break,continue,return,gotobreak,
4、continue,return,goto多分支选择语句多分支选择语句switchswitch条件分支语句条件分支语句if( )if( )else else 分分支支转转移移流流程程控控制制语语句句花括号括起来的语句花括号括起来的语句复合语句复合语句只有一个分号的语句只有一个分号的语句空语句空语句表达式加分号构成表达式加分号构成表达式语句表达式语句函数调用加分号构成函数调用加分号构成函数调用语句函数调用语句简单的顺简单的顺序执行语序执行语句句C 语 句 的 分 类以上语句添加标号,构成标号语句,以上语句添加标号,构成标号语句,标号语句标号语句forfor循环循环for( ) for( ) 直到型
5、循环直到型循环do do while( ) while( ) 当循环当循环while( ) while( ) 循循环环无条件转移语句无条件转移语句break,continue,return,gotobreak,continue,return,goto多分支选择语句多分支选择语句switchswitch条件分支语句条件分支语句if( )if( )else else 分分支支转转移移流流程程控控制制语语句句花括号括起来的语句花括号括起来的语句复合语句复合语句只有一个分号的语句只有一个分号的语句空语句空语句表达式加分号构成表达式加分号构成表达式语句表达式语句函数调用加分号构成函数调用加分号构成函数调
6、用语句函数调用语句简单的顺简单的顺序执行语序执行语句句以上语句添加标号,构成标号语句,以上语句添加标号,构成标号语句,标号语句标号语句forfor循环循环for( ) for( ) 直到型循环直到型循环do do while( ) while( ) 当循环当循环while( ) while( ) 循循环环无条件转移语句无条件转移语句break,continue,return,gotobreak,continue,return,goto多分支选择语句多分支选择语句switchswitch条件分支语句条件分支语句if( )if( )else else 分分支支转转移移流流程程控控制制语语句句花括号
7、括起来的语句花括号括起来的语句复合语句复合语句只有一个分号的语句只有一个分号的语句空语句空语句表达式加分号构成表达式加分号构成表达式语句表达式语句函数调用加分号构成函数调用加分号构成函数调用语句函数调用语句简单的顺简单的顺序执行语序执行语句句C 语 句 的 分 类一、空语句与复合语句一、空语句与复合语句空语句空语句:只有一个分号的语句,属于不进行任:只有一个分号的语句,属于不进行任何操作的语句何操作的语句。过滤掉输入字符流中的空白、回车换行和制表符的过滤掉输入字符流中的空白、回车换行和制表符的语句。循环体是一个空语句:语句。循环体是一个空语句:while(c=getchar()= |c=whi
8、le(c=getchar()= |c= n|c=n|c= t)t); ;计算字符串的长度语句计算字符串的长度语句,其,其循环体是一个空语句:循环体是一个空语句:for( i=0; ai!=for( i=0; ai!= 0; i+ ) ;0; i+ ) ;复合语句复合语句:在程序中用大括号括起来的若干语在程序中用大括号括起来的若干语句成为复合语句。句成为复合语句。一般形式:一般形式:数据说明部分;数据说明部分;执行语句部分;执行语句部分; 执行语句可以是简执行语句可以是简单语句、构造语句,单语句、构造语句,还可以是复合语句。还可以是复合语句。 在复合语句内部定在复合语句内部定义的变量,其作用域义
9、的变量,其作用域仅限于该复合语句的仅限于该复合语句的内部;内部;例例11:比较:比较a, b a, b 的大小,且把大者赋给变量的大小,且把大者赋给变量x x,小的小的赋给变量赋给变量y y,并打印输。并打印输。# #include include void main()void main()int a,b,x,y;int a,b,x,y;a=2; b=3;a=2; b=3;if(ab)if(ab)x=a; y=b;x=a; y=b; elseelsex=b; y=a;x=b; y=a; printf(x=%d y=%dprintf(x=%d y=%d n,x, y);n,x, y); 运行结
10、果:运行结果:x=3 y=2x=3 y=2 二、条件语句二、条件语句(ifif)1. 两种基本形式两种基本形式:基本形式基本形式1 1:if(if(表达式)语句表达式)语句1 1 else else 语句语句2 2表达式表达式?语句语句1语句语句2非零(真)非零(真)零零表达式表达式?语句语句1语句语句2非零(真)非零(真)零零表达式?表达式?语句语句1非零(真)非零(真)零零表达式?表达式?语句语句1非零(真)非零(真)零零基本形式基本形式2 2:if(if(表达式)语句表达式)语句1 1例例22:比较:比较a, b a, b 的大小,且把大者赋给变量的大小,且把大者赋给变量x x,小小的赋
11、给变量的赋给变量y y,并打印输。并打印输。# #include include void main()void main()int a,b,x,y; a=2; b=3;int a,b,x,y; a=2; b=3;if(ab)if(ab)x=a; y=b; x=a; y=b; else else x=b; y=a;x=b; y=a; printf(x=%d y=%dprintf(x=%d y=%d n,x, y);n,x, y); 运行结果:运行结果:x=3 y=2x=3 y=22. if语句的嵌套语句的嵌套(1 1)在基本形式)在基本形式1 1的的elseelse后的语句后的语句2 2位置层
12、层位置层层嵌套基本形式嵌套基本形式1 1语句。语句。基本形式基本形式1 1:if(if(表达式)语句表达式)语句1 1else else 语句语句2 2基本形式基本形式2 2:if(if(表达式)语句表达式)语句1 1ifif(表达式表达式1 1) 语句语句1 1else ifelse if(表达式表达式2 2)语句)语句2 2else ifelse if(表达式表达式n n)语句语句n nelse else 语句语句n+1;n+1;2. if语句的嵌套语句的嵌套基本形式基本形式1 1:if(if(表达式)语句表达式)语句1 1else else 语句语句2 2基本形式基本形式2 2:if(i
13、f(表达式)语句表达式)语句1 1ifif(表达式表达式1 1)ifif(表达式表达式2 2)ifif(表达式表达式2 2)语句)语句1 1else else 语句语句2 2else else 语句语句3 3else else 语句语句4 4(2 2)在基本形式)在基本形式1 1的语句的语句1 1位置层层嵌套基本位置层层嵌套基本形式形式1 1。2. if语句的嵌套语句的嵌套基本形式基本形式1 1:if(if(表达式)语句表达式)语句1 1else else 语句语句2 2基本形式基本形式2 2:if(if(表达式)语句表达式)语句1 1ifif(表达式表达式1 1)ifif(表达式表达式2 2
14、)语句)语句1 1else else 语句语句2 2(3 3)在基本形式)在基本形式1 1的语句的语句1 1位置嵌套基本形式位置嵌套基本形式2 2elseelse究竟与哪一个究竟与哪一个ifif配对?配对? 基本形式基本形式1 1: if(if(表达式)语句表达式)语句1 1 else else 语句语句2 2基本形式基本形式2 2: if(if(表达式)语句表达式)语句1 1 语法规定语法规定elseelse总是与它前面最接近的还没总是与它前面最接近的还没有配对的有配对的ifif配对;配对; 进入进入ifif语句后,不管其层层嵌套有多复杂,语句后,不管其层层嵌套有多复杂,最多只执行其中的一个
15、语句。最多只执行其中的一个语句。注意:注意:void main()void main()int snum, score; char grade;int snum, score; char grade;scanf(%d%d,&snum, &score );scanf(%d%d,&snum, &score );if(score94)if(score94)grade=5;grade=5;else if(score79)else if(score79)grade=4;grade=4;else if(score59)else if(score59)grade=3;grade=3;elseelsegrad
16、e=2;grade=2;printf(%d %cprintf(%d %c n,snum, grade );n,snum, grade ); 分层缩进对齐的形式,分层缩进对齐的形式,便于阅读,便于调试。便于阅读,便于调试。elseelse总是与它前面最接总是与它前面最接近的还没有配对的近的还没有配对的ifif配对配对进入进入ifif语句后至多执行语句后至多执行其中的一个语句,即使嵌其中的一个语句,即使嵌套形式也不例外;套形式也不例外;三、多分之选择语句三、多分之选择语句(switchswitch)switch(switch(表达式表达式)case case 常量表达式常量表达式1 1:语句:语句
17、1 1case case 常量表达式常量表达式2 2:语句:语句2 2case case 常量表达式常量表达式n n:语句语句n n default : default :语句语句n+1 n+1 switchswitch语句形式:语句形式:功能:根据表功能:根据表达式的值是否达式的值是否与某常量表达与某常量表达式式i i相同,来选相同,来选择执行若干语择执行若干语句中的一个语句中的一个语句或一个语句句或一个语句序列。若要真序列。若要真正起到多分支正起到多分支选择执行功能选择执行功能,须配合使用,须配合使用breakbreak语句。语句。switch(switch(表达式表达式)case cas
18、e 常量表达式常量表达式1 1:语句:语句1; 1; breakbreak; ; case case 常量表达式常量表达式2 2:语句:语句2; 2; breakbreak; ; case case 常量表达式常量表达式n n:语句语句n; n; breakbreak; ; defalt : defalt :语句语句n+1 n+1 真正能起到多分支选择执行功能的形式:真正能起到多分支选择执行功能的形式:breakbreak语句用于终止语句用于终止switch switch 语语句的执行,跳出句的执行,跳出switch switch 结构。结构。说明:说明: 表达式和常量表达式表达式和常量表达式
19、i i要求是要求是整形或字符形,且两者类型相整形或字符形,且两者类型相同;同; 常量表达式常量表达式i i的值必须互不相的值必须互不相同,它们只起相当于语句入口同,它们只起相当于语句入口标号的作用,没有条件判断分标号的作用,没有条件判断分支执行的功能;支执行的功能; 执行时若常量表达式执行时若常量表达式i i的值与的值与表达式相等,就顺序执行其后表达式相等,就顺序执行其后的语句,否则执行的语句,否则执行defaltdefalt后后的语句的语句n+1n+1;switch(switch(表达式表达式)case case 常量表达式常量表达式1 1:语句语句1; 1; breakbreak; ; c
20、ase case 常量表达式常量表达式2 2:语句语句2; 2; breakbreak; ; case case 常量表达式常量表达式n n:语句语句n; n; breakbreak; ; defalt : defalt :语句语句n+1 n+1 void main()void main()char grade;char grade;scanf(%c,&grade );scanf(%c,&grade );switch(grade)switch(grade)case A: printf(grade85case A: printf(grade85 n);n);case B: printf(grad
21、e75case B: printf(grade75 n);n);case C: printf(grade60case C: printf(grade60 n);n);case D: printf(grade60case D: printf(grade85grade85grade75grade75grade60grade60grade60grade85case A: printf(grade85 n); break; n); break; case B: printf(grade75case B: printf(grade75 n); break; n); break; case C: prin
22、tf(grade60case C: printf(grade60 n); break; n); break; case D: printf(grade60case D: printf(grade85grade85 多个多个casecase可以共用一组执行语句可以共用一组执行语句void main()void main()char grade;char grade;scanf(%c,&grade );scanf(%c,&grade );switch(grade)switch(grade)case A:case A:case B:case B:case C: printf(grade60case
23、C: printf(grade60 n); break; n); break; case D: printf(grade60case D: printf(grade85grade85void main()void main()double x, y; char operate;double x, y; char operate;scanf(%lf,&x);scanf(%lf,&x);while(operate=getchar()!=)while(operate=getchar()!=)scanf(%lf,&y);scanf(%lf,&y);switch(operate)switch(opera
24、te)case +: x+=y; break;case +: x+=y; break;case case - -: x: x- -=y; break;=y; break;case *: x*=y; break;case *: x*=y; break;case /: x/=y; break;case /: x/=y; break; printf(%fprintf(%f n,x);n,x); 例例44模拟袖珍计算器的加减乘除四则运算编程,读模拟袖珍计算器的加减乘除四则运算编程,读入数据,并按算式计算结果。入数据,并按算式计算结果。输入:输入:10.8+0.1310.8+0.13* *10=10=输
25、出:输出:109.300000109.300000void main()void main()double x, y; double x, y; char operate;char operate;scanf(%lf,&x);scanf(%lf,&x);while(operate=getchar()!=)while(operate=getchar()!=)scanf(%lf,&y);scanf(%lf,&y);switch(operate)switch(operate)case +: x+=y; break;case +: x+=y; break;case case - -: x: x- -=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 语句 控制
限制150内