C语言程序设计语句和控制流.ppt
第三章 语句与控制流 内容提要:内容提要:C语句的分类语句的分类空语句与复合语句空语句与复合语句条件分支语句条件分支语句循环控制语句与嵌套循环控制语句与嵌套执行流程强制转移执行流程强制转移编程常用技巧编程常用技巧 语句分类表语句分类表 空语句与复合语句空语句与复合语句 条件分支语句条件分支语句 循环控制语句循环控制语句 程序示例程序示例 流程强制转移流程强制转移C C语言是一种很好的结构化程序设计语言是一种很好的结构化程序设计语言,它提供了比语言,它提供了比FORTRANFORTRAN、PASCLEPASCLE更丰更丰富的流程控制语句,还提供了将多个语富的流程控制语句,还提供了将多个语句组合成一个语句的复合语句。句组合成一个语句的复合语句。第三章 语句与控制流以上语句添加标号,构成标号语句,以上语句添加标号,构成标号语句,标号语句标号语句forfor循环循环for( ) for( ) 直到型循环直到型循环do do while( ) while( ) 当循环当循环while( ) while( ) 循循环环无条件转移语句无条件转移语句break,continue,return,gotobreak,continue,return,goto多分支选择语句多分支选择语句switchswitch条件分支语句条件分支语句if( )if( )else else 分分支支转转移移流流程程控控制制语语句句花括号括起来的语句花括号括起来的语句复合语句复合语句只有一个分号的语句只有一个分号的语句空语句空语句表达式加分号构成表达式加分号构成表达式语句表达式语句函数调用加分号构成函数调用加分号构成函数调用语句函数调用语句简单的顺简单的顺序执行语序执行语句句以上语句添加标号,构成标号语句,以上语句添加标号,构成标号语句,标号语句标号语句forfor循环循环for( ) for( ) 直到型循环直到型循环do do while( ) while( ) 当循环当循环while( ) while( ) 循循环环无条件转移语句无条件转移语句break,continue,return,gotobreak,continue,return,goto多分支选择语句多分支选择语句switchswitch条件分支语句条件分支语句if( )if( )else else 分分支支转转移移流流程程控控制制语语句句花括号括起来的语句花括号括起来的语句复合语句复合语句只有一个分号的语句只有一个分号的语句空语句空语句表达式加分号构成表达式加分号构成表达式语句表达式语句函数调用加分号构成函数调用加分号构成函数调用语句函数调用语句简单的顺简单的顺序执行语序执行语句句C 语 句 的 分 类以上语句添加标号,构成标号语句,以上语句添加标号,构成标号语句,标号语句标号语句forfor循环循环for( ) for( ) 直到型循环直到型循环do do while( ) while( ) 当循环当循环while( ) while( ) 循循环环无条件转移语句无条件转移语句break,continue,return,gotobreak,continue,return,goto多分支选择语句多分支选择语句switchswitch条件分支语句条件分支语句if( )if( )else else 分分支支转转移移流流程程控控制制语语句句花括号括起来的语句花括号括起来的语句复合语句复合语句只有一个分号的语句只有一个分号的语句空语句空语句表达式加分号构成表达式加分号构成表达式语句表达式语句函数调用加分号构成函数调用加分号构成函数调用语句函数调用语句简单的顺简单的顺序执行语序执行语句句以上语句添加标号,构成标号语句,以上语句添加标号,构成标号语句,标号语句标号语句forfor循环循环for( ) for( ) 直到型循环直到型循环do do while( ) while( ) 当循环当循环while( ) while( ) 循循环环无条件转移语句无条件转移语句break,continue,return,gotobreak,continue,return,goto多分支选择语句多分支选择语句switchswitch条件分支语句条件分支语句if( )if( )else else 分分支支转转移移流流程程控控制制语语句句花括号括起来的语句花括号括起来的语句复合语句复合语句只有一个分号的语句只有一个分号的语句空语句空语句表达式加分号构成表达式加分号构成表达式语句表达式语句函数调用加分号构成函数调用加分号构成函数调用语句函数调用语句简单的顺简单的顺序执行语序执行语句句C 语 句 的 分 类一、空语句与复合语句一、空语句与复合语句空语句空语句:只有一个分号的语句,属于不进行任:只有一个分号的语句,属于不进行任何操作的语句何操作的语句。过滤掉输入字符流中的空白、回车换行和制表符的过滤掉输入字符流中的空白、回车换行和制表符的语句。循环体是一个空语句:语句。循环体是一个空语句:while(c=getchar()= |c=while(c=getchar()= |c= n|c=n|c= t)t); ;计算字符串的长度语句计算字符串的长度语句,其,其循环体是一个空语句:循环体是一个空语句:for( i=0; ai!=for( i=0; ai!= 0; i+ ) ;0; i+ ) ;复合语句复合语句:在程序中用大括号括起来的若干语在程序中用大括号括起来的若干语句成为复合语句。句成为复合语句。一般形式:一般形式:数据说明部分;数据说明部分;执行语句部分;执行语句部分; 执行语句可以是简执行语句可以是简单语句、构造语句,单语句、构造语句,还可以是复合语句。还可以是复合语句。 在复合语句内部定在复合语句内部定义的变量,其作用域义的变量,其作用域仅限于该复合语句的仅限于该复合语句的内部;内部;例例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); 运行结果:运行结果: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,小小的赋给变量的赋给变量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位置层层位置层层嵌套基本形式嵌套基本形式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(if(表达式)语句表达式)语句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)语句)语句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语句后,不管其层层嵌套有多复杂,语句后,不管其层层嵌套有多复杂,最多只执行其中的一个语句。最多只执行其中的一个语句。注意:注意: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;elseelsegrade=2;grade=2;printf(%d %cprintf(%d %c n,snum, grade );n,snum, grade ); 分层缩进对齐的形式,分层缩进对齐的形式,便于阅读,便于调试。便于阅读,便于调试。elseelse总是与它前面最接总是与它前面最接近的还没有配对的近的还没有配对的ifif配对配对进入进入ifif语句后至多执行语句后至多执行其中的一个语句,即使嵌其中的一个语句,即使嵌套形式也不例外;套形式也不例外;三、多分之选择语句三、多分之选择语句(switchswitch)switch(switch(表达式表达式)case case 常量表达式常量表达式1 1:语句:语句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 case 常量表达式常量表达式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 结构。结构。说明:说明: 表达式和常量表达式表达式和常量表达式i i要求是要求是整形或字符形,且两者类型相整形或字符形,且两者类型相同;同; 常量表达式常量表达式i i的值必须互不相的值必须互不相同,它们只起相当于语句入口同,它们只起相当于语句入口标号的作用,没有条件判断分标号的作用,没有条件判断分支执行的功能;支执行的功能; 执行时若常量表达式执行时若常量表达式i i的值与的值与表达式相等,就顺序执行其后表达式相等,就顺序执行其后的语句,否则执行的语句,否则执行defaltdefalt后后的语句的语句n+1n+1;switch(switch(表达式表达式)case case 常量表达式常量表达式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 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(grade75case 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: printf(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 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(operate)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=输出:输出: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- -=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); 输入:输入:10.8+0.13*10=10.8+0.13*10=输出:输出:109.300000109.300000设问设问:若去掉:若去掉breakbreak语语句执行结果将如何?句执行结果将如何? 输入:输入:10.8+0.1310.8+0.13* *10=10=输出:输出:10.810.8void 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(operate)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); 说明三个问题:说明三个问题:1)1) switchswitch语句的应用;语句的应用;2)2) 数据的输入与读取数据技巧(输入数据的输入与读取数据技巧(输入缓冲区概念);缓冲区概念);3)3) 该程序的运算是一步步进行的,相该程序的运算是一步步进行的,相当于计算器,没有运算符优先级处当于计算器,没有运算符优先级处理功能。理功能。说明三个问题:说明三个问题:1)1) switchswitch语句的应用;语句的应用;2)2) 数据的输入与读取数据技巧(输入数据的输入与读取数据技巧(输入缓冲区概念);缓冲区概念);3)3) 该程序的运算是一步步进行的,相该程序的运算是一步步进行的,相当于计算器,没有运算符优先级处当于计算器,没有运算符优先级处理功能。理功能。四、循环语句四、循环语句(1 1)当循环()当循环(whilewhile语句)语句)while( while( 表达式表达式 ) )语句语句特点特点:先判断后执行,它:先判断后执行,它对循环体可能一次也不执对循环体可能一次也不执行。通常用于事先不能确行。通常用于事先不能确定循环次数的情况。定循环次数的情况。零零非零非零表达式?表达式?语句(循环体)语句(循环体)零零非零非零表达式?表达式?语句(循环体)语句(循环体)# #include include void main()void main()int i,sum=0;int i,sum=0;i=1;i=1;while( i=100 )while( i=100 )sum=sum+i;sum=sum+i;i+;i+; printf(%dprintf(%d n,sum);n,sum); 例例5 5 求求。源程序如下:。源程序如下: 1001nn循环控制变量循环控制变量:在表达式中出:在表达式中出现的变量称为循环控制变量。现的变量称为循环控制变量。必须注意的几个问题:必须注意的几个问题:循环控制变量必须有正确循环控制变量必须有正确的初值;的初值;在循环体内应有改变其值在循环体内应有改变其值的语句;的语句;其值的改变应使得表达式其值的改变应使得表达式的值最终趋向于零(循环结束的值最终趋向于零(循环结束条件),否则将形成死循环。条件),否则将形成死循环。# #include include void main()void main()int i,sum=0;int i,sum=0;i=1;i=1;while( i=100 )while( i=100 )sum=sum+i;sum=sum+i;i+;i+; printf(%dprintf(%d n,sum);n,sum); 例例5 5 求求。源程序如下:。源程序如下: 1001nn注意注意:循环体如果包:循环体如果包含一个以上的语句,含一个以上的语句,应该用花括号括起来应该用花括号括起来,以复合形式出现,以复合形式出现,若 不 加 花 括 号 , 则若 不 加 花 括 号 , 则whilewhile语句的范围只到语句的范围只到whilewhile后面的第一个语后面的第一个语句处。句处。输出结果:输出结果:50505050(2 2)直到型循环()直到型循环(dodowhilewhile语句)语句)dodo语句语句while( while( 表达式表达式 ) );特点特点:先执行后判断,循:先执行后判断,循环体至少执行一次。适用环体至少执行一次。适用于循环体至少执行一次,于循环体至少执行一次,且总次数不确定的情况。且总次数不确定的情况。零零非非零零表达式?表达式?语句(循环体)语句(循环体)零零非非零零表达式?表达式?语句(循环体)语句(循环体)# #include include void main()void main()int i,sum=0;int i,sum=0;i=1;i=1;dodosum=sum+i;sum=sum+i;i+;i+;while( i=100 );while( i=100 );printf(%dprintf(%d n,sum);n,sum); 例例5 5 求求。源程序如下:。源程序如下: 1001nn说 明说 明 : dodowhilewhile语句与语句与whilewhile语句语句类似,只不过是将类似,只不过是将条件表达式从语句条件表达式从语句的开始移到了尾部的开始移到了尾部,因此循环体至少,因此循环体至少执行一次执行一次输出结果:输出结果:50505050输出结果:输出结果:50505050while(c=while(c=getchargetchar()!=EOF)()!=EOF)+ncnc; ;if(c=if(c= n) +n) +nlnl; ;if(c= |c=if(c= |c= n|c=n|c= t)t)inwordinword=NO;=NO;else if(else if(inwordinword=NO)=NO)inwordinword=YES; +=YES; +nwnw; ; printfprintf(%d %d %d(%d %d %d n,n,nlnl, ,nwnw, ,ncnc);); 输入:输入:count lineswords D输出:输出:2 3 18EOFEOF为文件结束标志为文件结束标志UNIXUNIX系统为系统为ctrl+dctrl+d 微机系统为微机系统为ctrl+z ctrl+z 13543)(23 xxxxf设设其中:其中:1)1) 已知牛顿迭代:已知牛顿迭代:)(/ )(1kkkkxfxfxx 2)2)589)(2 xxxf3)3) 允许误差允许误差( (计算精度计算精度) ):当:当的绝对值小于的绝对值小于1 1E E- -6 6时,时,就作为方程的解。就作为方程的解。)(/ )(kkkxfxfd 1 kx4)4) 采用高效的计算表达式形式,以提高计算速度。采用高效的计算表达式形式,以提高计算速度。)13*) 5*) 4*3(13543)(23 xxxxxxxf5*) 8*9(589)(2 xxxxxf采用精度作为循环结采用精度作为循环结束标志,是编程中经常束标志,是编程中经常使用的方法之一使用的方法之一# #include include #define EPS 1E#define EPS 1E- -6 6void main()void main()double x,d;double x,d;/d/d为允许误差为允许误差printfprintf(x=);(x=);scanfscanf(%lf,&x);(%lf,&x);dodod=d=- -(3*x(3*x- -4)*x4)*x- -5)*x+13)/(9*x5)*x+13)/(9*x- -8)*x8)*x- -5);5);x=x+d;x=x+d;while(while(fabsfabs(d)EPS);(d)EPS);printfprintf(the root is %f(the root is %f n,x);n,x); 输入:输入:x=2x=2输出:输出:the root is -1.548910the root is -1.548910(四)循环的嵌套(四)循环的嵌套 一个循环体内又包含另一个完整的循环结一个循环体内又包含另一个完整的循环结构,称为循环嵌套。内层循环中还可以继续嵌构,称为循环嵌套。内层循环中还可以继续嵌套循环,这就是多重循环。套循环,这就是多重循环。 三种循环(三种循环(while, dowhile, do- -while, forwhile, for)可以可以互相多重嵌套,还可以与分支选择语句(互相多重嵌套,还可以与分支选择语句(if, if, switchswitch)构成互相多重嵌套。构成互相多重嵌套。 在语法结构上必须注意:在语法结构上必须注意:全包含不交叉!全包含不交叉! 在语法结构上必须注意:在语法结构上必须注意:全包含不交叉!全包含不交叉! 在语法结构上必须注意:在语法结构上必须注意:全包含不交叉!全包含不交叉! 在语法结构上必须注意:在语法结构上必须注意:全包含不交叉!全包含不交叉!例例1010百鸡问题:鸡翁一值钱五百鸡问题:鸡翁一值钱五; ;鸡母一值钱三鸡母一值钱三; ;鸡雏鸡雏三值钱一。百钱买百鸡三值钱一。百钱买百鸡, ,问鸡翁、鸡母、鸡雏各几何?问鸡翁、鸡母、鸡雏各几何?采用枚举的算法思想,对每一种可能的组合进行判断。采用枚举的算法思想,对每一种可能的组合进行判断。void main()int cock, hen, chicken;for(cock=0; cock=100; cock+)for(hen=0; hen=100; hen+)for(chicken=0; chicken=100; chicken+)if( cock+hen+chicken=100 &cock*5+hen*3+chicken/3.0=100 )printf(%d %d %dn,cock,hen,chicken);void main()int cock, hen, chicken;for(cock=0; cock=100; cock+)for(hen=0; hen=100; hen+)for(chicken=0; chicken=100; chicken+)if( cock+hen+chicken=100 &cock*5+hen*3+chicken/3.0=100 )printf(%d %d %dn,cock,hen,chicken);结果:结果: 0 25 754 18 784 18 788 11 818 11 8112 4 8412 4 84 循环次数的计算:外循环执行一次内循环需要执行循环次数的计算:外循环执行一次内循环需要执行100100次,依次类推,因此内层循环体次,依次类推,因此内层循环体ifif语句需要一百万语句需要一百万次判断。因此有必要考虑优化算法。次判断。因此有必要考虑优化算法。101101次次101101次次101101次次void main()int cock, hen, chicken;for(cock=0; cock=100; cock+)for(hen=0; hen=100; hen+)for(chicken=0; chicken=100; chicken+)if( cock+hen+chicken=100 &cock*5+hen*3+chicken/3.0=100 )printf(%d %d %dn,cock,hen,chicken);优 化 算 法 减优 化 算 法 减少判断次数:少判断次数:void main()int cock, hen, chicken;for(cock=0; cock=20; cock+)for(hen=0; hen=33; hen+)for(chicken=0; chicken=100-cock-hen; chicken+)if( cock+hen+chicken=100 &cock*5+hen*3+chicken/3.0=100 )printf(%d %d %dn,cock,hen,chicken);cockcock数不会大于:数不会大于:1001005=205=20henhen数不会大于数不会大于 :1001003=333=33chickenchicken数应为数应为 :100100- -cockcock- -henhenvoid main()int cock, hen, chicken;for(cock=0; cock=20; cock+)for(hen=0; hen=33; hen+)for(chicken=0; chicken=100-cock-hen; chicken+)if( cock+hen+chicken=100 &cock*5+hen*3+chicken/3.0=100 )printf(%d %d %dn,cock,hen,chicken);要求程序按层次缩进,同层对齐的格式书写,要求程序按层次缩进,同层对齐的格式书写,便于阅读调试。便于阅读调试。(五)(五)returnreturn语句语句ReturnReturn语句形式:语句形式:return( return( 表达式表达式 ););或或return;return;功能:功能: 将程序控制(执行流程控制)返回到主调将程序控制(执行流程控制)返回到主调函数的调用处。函数的调用处。 在有表达式时,将表达式的值带回到主在有表达式时,将表达式的值带回到主调函数的调用处。无表达式时,调用处的值是调函数的调用处。无表达式时,调用处的值是不确定的。不确定的。例例1111编一函数,返回任一实数的符号。当自变量编一函数,返回任一实数的符号。当自变量X X的的值大于值大于0 0时返回时返回1 1;自变量;自变量X X的值等于的值等于0 0时返回时返回0 0;自变量;自变量X X的值小于的值小于0 0时返回时返回- -1 1。#include int sign(double x)if( x0 ) return(-1);else return(x=0)?0:1);void main()double a;scanf(lf,&a);printf(sign= %dn, sign(a); 在一个函数中,在一个函数中,根据需要可多处设根据需要可多处设置置returnreturn语句,但语句,但最多只执行其中的最多只执行其中的一个。一个。输入:输入:-123-123输出:输出:sign= -1sign= -1(六)(六)breakbreak中断语句中断语句breakbreak语句形式:语句形式:break;break;功能功能: : 强迫终止循环的执行使提前退出循环;强迫终止循环的执行使提前退出循环; 中断中断switchswitch语句的执行。语句的执行。while( )break;while( )break;switch( )break;switch( )break;dobreak; while( );dobreak; while( );for( )break;for( )break;while( )break;while( )break;while( )break;while( )break;switch( )break;switch( )break;switch( )break;switch( )break;dobreak; while( );dobreak; while( );dobreak; while( );dobreak; while( );for( )break;for( )break;for( )break;for( )break;注意注意: :不能用于循环语句和不能用于循环语句和switchswitch语句之外的任何地方。语句之外的任何地方。(七)(七)(七)(七)continuecontinuecontinuecontinue语句语句语句语句continuecontinue语句形式:语句形式:continue;continue;功能功能: :结束本次循环,即跳过循环体中本语句结束本次循环,即跳过循环体中本语句下面尚未执行的语句,接着进行下一次是否继下面尚未执行的语句,接着进行下一次是否继续循环的判断。(只能用于循环体)续循环的判断。(只能用于循环体)while( )continue;while( )continue;docontinue; while( );docontinue; while( );for( )continue;for( )continue;while( )continue;while( )continue;while( )continue;while( )continue;docontinue; while( );docontinue; while( );docontinue; while( );docontinue; while( );for( )continue;for( )continue;for( )continue;for( )continue;breakbreak与与continuecontinue语句的区别语句的区别breakbreak是中断包含是中断包含breakbreak语句的最内层的整个循环语语句的最内层的整个循环语句的执行,终止本层循环,或句的执行,终止本层循环,或switchswitch语句;语句;continuecontinue只是中断当前