您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第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只,可以列出方程组:fnmhnm422224hfnfhm5.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
本文标题:第5章程序控制结构与语句
链接地址:https://www.777doc.com/doc-599443 .html