第5章程序控制结构与语句

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第5章C程序的流程——程序控制结构与语句程序流程概述语句顺序结构与语句选择结构与语句循环结构与语句转向语句5.1程序流程概述程序流程就是计算动作执行的过程。程序的流程分为三种:顺序结构选择结构循环结构5.2语句5.2.1基本赋值语句5.2.2表达式语句5.2.3基本输入/输出语句5.2.4控制语句5.2.5空语句和复合语句5.2.1基本赋值语句赋值语句就是在赋值表达式的后面加上分号,一般形式为:变量=表达式;例如:inti;floata=3.5;i=1;i=i+a;a+1=a+1;/*错误*/5.2.2表达式语句由一个表达式加一个分号构成一个表达式语句,一般形式为:表达式;5.2.3基本输入/输出语句1、基本输出语句:printf()功能是按指定的输出格式把相应的参数值在标准输出设备(通常是终端)上显示出来。一般使用格式是:printf(格式控制串,参数1,参数2,……);例如:printf(a,b的值分别为:%d,%d,a,b);5.2.3基本输入/输出语句1、基本输出语句:printf()转换说明输出形式举例输出%d十进制的int型printf(“countis%d”,34);countis34%f十进制的double型printf(“themaxis%f”,max=3.123);themaxis3.123%c单个字符printf(“**%c**”,a=’A’);**A**%s字符串printf(“%s”,”helloworld!”);helloworld!%o无符号八进制数printf(“Oce=%o”,a=034);Oce=34%x无符号十六进制数printf(“Hex=%x”,a=0xFF4e);Hex=FF4e%%%本身printf(“a%%b==3”);a%b==3常用的转换说明及作用范例5-15.2.3基本输入/输出语句2、基本输入语句:scanf()功能是接收用户从键盘上输入的数据,并按照格式控制符的要求进行类型转换,然后送到由对应参数所指定的变量单元中去。一般格式为:scanf(格式控制串,参数地址1,参数地址2,…….);例如:scanf(“%d%f”,&a,&b);输入:103.0↙&变量名5.2.3基本输入/输出语句2、基本输入语句:scanf()常用的转换说明及作用转换说明输出形式举例输入%d匹配带符号的十进制的int型scanf(“%d”,&a);输入20,则a为20%f匹配带符号的十进制的浮点数scanf(“%f”,&a);输入2.0,则a为2.000000%c匹配单个字符scanf(“%c”,&a);输入a,则a为’a’%s匹配非空白的字符序列scanf(“%s”,&s);输入hello,则数组s中放置hello,末尾自动加上空字符%o匹配带符号八进制数scanf(“%o”.&a);输入754,则a为八进制754%x匹配带符号的十六进制数scanf(“%x”,&a);输入123,则a为十六进制123【范例5-2】计算圆的面积,半径由用户指定。5.2.4控制语句C语言中有9种控制语句,它们分别是:if-else语句、for语句、while语句、do-while语句、break语句、switch语句、goto语句、continue语句、return语句5.2.5空语句和复合语句空语句只有一个分号构成,即:;如:while(getchar()!=‘\n’);复合语句就是用{}把多个单一的语句括起来,如:{z=x+y;t=z/100;printf(%f,t);}5.3顺序结构与语句在顺序结构中,程序是按照语句的书写顺序依次执行,语句在前的先执行,语句在后的后执行。可用如下流程图表示:语句1语句2例如:a=3;b=4;c=a+b;5.3顺序结构与语句【范例5-3】“鸡兔同笼问题”。鸡有2只脚,兔有4只脚,如果已经鸡和兔的总头数为h,总脚数为f。问笼中各有多少只鸡和兔。问题分析:设笼中的鸡有m只,兔有n只,可以列出方程组:fnmhnm422224hfnfhm5.4选择结构与语句5.4.1选择结构5.4.2单分支选择结构——if语句5.4.3双分支选择结构——if-else语句5.4.4多分支选择结构——if-else的嵌套形式5.4.5多分支选择结构——switch语句5.4.1选择结构选择结构可以用分支语句来实现。分支语句包括if语句和switch语句。5.4.2单分支选择结构——if语句一般语法为:if(表达式)语句;执行过程为:先计算表达式的值,如果表达式为非0(即为真)时,则执行语句;否则不执行任何语句,退出if语句,继续执行if语句之后的部分。例如:if(xy)printf(“%d”,x);;5.4.2单分支选择结构——if语句【范例5-4】输入三个不同的数,按从大到小的顺序输出。①先将a与b比较,把较大者放在a中,较小者放在b中;②再将a与c比较,把较大者放在a中,较小者放在c中,此时,a为三者中的最大者;③最后将b与c比较,把较大者放在b中,小者放在c中,此时a、b、c已经按从大到小的顺序排列。5.4.2单分支选择结构——if语句ba交换a,bTca交换a,cTcb交换b,cT输入a,b,c输出a,b,c5.4.3双分支选择结构——if-else语句作用:当给定的条件满足时,执行一个语句;当条件不满足时,执行另一个语句。一般语法为:if(表达式)语句1;else语句2;其执行过程为:先计算表达式的值,如果表达式的值为为非0(即为真)时,则执行语句1;否则执行语句2。表达式truefalse语句1语句2流程图表示5.4.3双分支选择结构——if-else语句例如:if(a0)printf(“aispositive.\n”);elseprintf(“aisnotpositive.\n”);【范例5-5】判断输入的整数是否是13的倍数。注意:else部分不能独立存在,即else前一定有一个“;”,它一定是if语句的一部分。5.4.4多分支选择结构——if-else的嵌套形式在if语句中又可以包含一个或多个if语句,这种形式称作if语句的嵌套。嵌套有以下两种形式:1.嵌套在else分支中,形成if....else...if语句;2.嵌套在if分支中表达式truefalse语句1语句25.4.4多分支选择结构——if-else的嵌套形式1.嵌套在else分支中,其形式为:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;......else语句n;【范例5-6】评价学生的成绩。按分数score输出等级:score≥90为优,80≤score<90为良,70≤score<80为中等,60≤score<70为及格,score<60为不及格。表达式1语句1FT表达式2语句2FT语句n表达式3语句3FT…5.4.4多分支选择结构——if-else的嵌套形式2.嵌套在if分支中,其形式为:if(表达式1)if(表达式2)语句1;else语句2;else语句3;【范例5-7】判断某学生的成绩score是否及格;如果及格是否达到优秀(score≥90)。表达式1FT语句2表达式2语句3FT语句n注意:C语言规定了if和else的“就近配对”原则,即else总是与前面最近的(未曾配对的)if配对。5.4.5多分支选择结构——switch语句switch语句的一般语法格式为:switch(表达式){case常量表达式1:语句1;[break;]case常量表达式2:语句2;[break;]……case常量表达式n:语句n;[break;][default:语句n+1;]}执行过程为:先计算表达式的值,并逐个与case后面的常量表达式的值相比较,当表达式的值与某个常量表达式i的值一致时,则从语句i开始执行;直到遇到break语句或switch语句的”}”;若表达式与任何常量表达式的值均不一致时,则执行default后面的语句或执行后续语句。5.4.5多分支选择结构——switch语句例如:switch(x){case1:printf(“statement1.\n”);break;case2:printf(“statement2.\n”);break;default:printf(“default”);}说明:⑴switch后的表达式类型一般为整形、字符型和枚举型,但不能为浮点型;⑵常量表达式i仅起语句标号作用,不作求值判断;⑶每个常量表达式的值必须各不相同,没有先后次序;⑷多个case语句可以共用一组执行语句【范例5-8】根据一个代表星期几的0到6之间的整数,在屏幕上输出它代表的是星期几。5.5循环结构与语句5.5.1循环结构5.5.2当型循环语句——for语句5.5.3当型循环语句——while语句5.4.4直到型循环语句——do-while语句5.4.5循环的嵌套5.5.1循环结构循环结构是指在满足循环条件时反复执行循环代码块,直到循环条件不能满足为止。C中有3种循环语句:while语句do_while语句for语句【范例5-9】计算100之内的奇数之和。5.5.2当型循环语句——for语句一般语法格式为:for(表达式1;表达式2;表达式3)循环体语句;表达式2FT计算表达式3循环体语句for后面的语句计算表达式1执行过程如下:①计算表达式1的值;②判断表达式2,如果其值为非0(真),则执行循环体语句,然后执行第③步;如果其值为0(假),则结束循环,执行第⑤步;③计算表达式3;④返回继续执行第②步;⑤循环结束,执行for语句的后续语句。5.5.2当型循环语句——for语句例如:sum=0;for(i=0;i=100;i++)sum+=i;可以将for语句的形式改写为:for(循环变量赋初值;循环条件;循环变量增值)循环体语句;5.5.2当型循环语句——for语句【范例5-10】经典问题:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=13+53+33。【范例5-11】计算n!,即n!=1*2*......*n。5.5.2当型循环语句——for语句for循环的扩展形式:⑴表达式1和表达式3可以是一个简单的一个简单的表达式,也可以是逗号表达式,例如:for(i=0,j=100;ij;i++,j--)k=i+j;⑵循环条件可由一个较复杂表达式的值来确定,例如:for(i=0;s[i]!=c&&s[i]!='\0';++i);⑶表达式2一般是关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其值不等于0就执行循环体。如:for(k=1;k-4;k++)s=s+k;5.5.2当型循环语句——for语句for循环的省略形式:⑴省略“表达式1”,此时应在for语句之前给循环变量赋初值。如:i=1;for(;i=100;i++)sum+=i;⑵省略“表达式2”,表示不判断循环条件,循环无终止的进行下去,也可以认为表达式2始终为真。如:for(i=1;;i++)sum+=i;⑶省略“表达式3”,此时应在循环体内部实现循环变量的增量,以保证循环能够正常结束。如:for(i=1;i=100;){sum+=i;i++}5.5.2当型循环语句——for语句for循环的省略形式:⑷省略“表达式1”和“表达式3”,此时只给出了循环条件,如:i=1;for(;i=100;){sum+=i;i++}⑸三个表达式都省略,即不设初值,也不判断条件,循环变量不增值。无终止地执行循环体。如:for(;;)循环体语句5.5.3当型循环语句——while语句语法格式为:while(表达式)循环体语句;表达式FT循环体语句while后面的语句执行过程是:当表达式为非0(真)时,执行循环体语句,然后重复上述过程,一直到表达式为0(假)时,while语句结束。如:i=1;while(i=100){su

1 / 49
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功