您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 计算机二级第章 程序控制结构
1C语言的语句C语句可分为以下五类:1.表达式语句2.函数调用语句3.控制语句4.复合语句5.空语句21.表达式语句表达式语句由表达式加上分号“;”组成。其一般形式为:表达式;执行表达式语句就是计算表达式的值。例如:x=y+z;赋值语句y+z;加法运算语句,但计算结果不能保留,无实际意义i++;自增1语句,i值增132.函数调用语句由函数名、实际参数加上分号“;”组成。其一般形式为:函数名(实际参数表);执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,求取函数值。例:43.控制语句控制语句用于控制程序的流程,以实现程序的各种结构方式。它们由特定的语句定义符组成。C语言有九种控制语句。可分成以下三类:(1)条件判断语句if语句,switch语句(2)循环执行语句dowhile语句,while语句,for语句(3)转向语句break语句,goto语句,continue语句,return语句54.复合语句把多个语句用括号{}括起来组成的一个语句称复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句{x=y+z;a=b+c;printf(“%d%d”,x,a);}是一条复合语句。复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不能加分号。65.空语句只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。例如while(getchar()!='\n');本语句的功能是,只要从键盘输入的字符不是回车则重新输入。这里的循环体为空语句。7【例3.1】#includestdio.h#includemath.hfloattriangle_area(floata,floatb,floatc){floatl;l=(a+b+c)/2.0;returnsqrt(l*(l-a)*(l-b)*(l-c));}main(){floata,b,c,area;printf(“请输入三角形三条边的边长:”);scanf(“%f%f%f”,&a,&b,&c);area=triangle_area(a,b,c);printf(“该三角形的面积是:%6.2f\n”,area);}}函数调用语句back主函数在后,自定义函数在前的格式8【例3.2】#includestdio.h#includemath.hmain()floattriangle_area(floata,floatb,floatc);{floata,b,c,area;printf(“请输入三角形三条边的边长:”);scanf(“%f%f%f”,&a,&b,&c);area=triangle_area(a,b,c);printf(“该三角形的面积是:%6.2f\n”,area);}floattriangle_area(floata,floatb,floatc){floatl;l=(a+b+c)/2.0;returnsqrt(l*(l-a)*(l-b)*(l-c));}9顺序结构按书写顺序执行的语句构成的程序段【例3.3】输入任意三个整数,求它们的和及平均值main(){intnum1,num2,num3,sum;floataver;printf(Pleaseinputthreenumbers:);scanf(%d%d%d,&num1,&num2,&num3);sum=num1+num2+num3;aver=sum/3.0;printf(num1=%d,num2=%d,num3=%d\n,num1,num2,num3);printf(sum=%d,aver=%7.2f\n,sum,aver);}这两部分语句的顺序能调换吗?10【例3.4】从键盘输入一个小写字母,要求用大小写字母形式输出该字母及对应的ASCII码值#includestdio.hmain(){charc1,c2;printf(Inputalowercaseletter:);c1=getchar();putchar(c1);printf(%d\n,c1);c2=c1-32;printf(%c,%d\n,c2,c2);}这两部分语句的顺序能调换吗?11在顺序结构程序中,一般包括以下几个部分:1.程序开头的编译预处理命令。在程序中要使用标准函数(又称库函数),除printf()和scanf()外,其它的都必须使用编译预处理命令,将相应的头文件包含进来。2.顺序结构程序的函数体中,是完成具体功能的各个语句和运算,主要包括:a)变量类型的说明;b)提供数据语句;c)运算部分;d)输出部分。12【例3.5】#includemath.hmain(){floata,b,c,l,area;printf(“请输入三角形三条边的边长:”);scanf(“%f%f%f”,&a,&b,&c);l=(a+b+c)/2.0;area=sqrt(l*(l-a)*(l-b)*(l-c));printf(“该三角形的面积是:%6.2f\n”,area);}13分支结构根据输入数据或中间结果的不同选择不同的语句组执行,此时需要一个变量或表达式的值来作为判定的依据。两种分支结构条件分支(if和if~else):根据给定的条件进行判断,决定执行某个分支的程序段;开关分支(switch):根据给定整型表达式的值进行判断,决定执行多路分支中的一支。14if结构结构一:单路选择结构if(表达式)语句组【例3.6】main(){inti;printf(“Pleaseinputaninteger:”);scanf(“%d”,&i);if(i0)i=-i;printf(“Theabsolutevalueis:%d\n”,i);}表达式语句1真假15【例3.7】输入两个数字将较大的送入x中,较小送入y中,并输出.算法分析:E1:输入x,y值E2:两者中较大者存入x中,较小存入y中E3:输出X,YE2.1IFxyTHENE2.2交换x,yE2.2.1将x值存入临时变量TEMP中E2.2.2将y值存入x中E2.2.3将TEMP中的值存入y中#includestdio.hmain(){intx,y,temp;printf(输入两个整数!);scanf(%d,%d,&x,&y);if(xy){temp=x;x=y;y=temp;}printf(较大值是=%d,较小值是=%d\n,x,y);16结构二:双路选择结构if(表达式)语句组1else语句组2表达式语句1语句2真假17结构三:多路选择if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3……elseif(表达式m)语句melse语句n18多路选择结构(4分支)表达式1语句1表达式2表达式3语句2语句3语句4假真真真假假19【例3.8】main(){inta;printf(Pleaseinputthescore:);scanf(“%d”,&a);if(a=90)printf(“Thegradeis:A\n”);elseif(a=80)printf(“Thegradeis:B\n”);elseif(a=70)printf(“Thegradeis:C\n”);elseif(a=60)printf(“Thegradeis:D\n”);elseprintf(“Thegradeis:E\n”);}从键盘上输入一个百分制成绩score,按下列原则输出其等级:90≤score,等级为A;80≤score90,等级为B;70≤score80,等级为C;60≤score70,等级为D;score60,等级为E。输入:95运行结果:Thegradeis:A输入:75运行结果:Thegradeis:C20if后面都有“表达式”,一般为逻辑表达式或关系表达式,也可以为任意的数值类型,系统对表达式的值进行判断,若为0,按“假”处理,否则按“真”处理。在if和else后面可以只含一个操作语句,也可以有多个操作语句,此时用{}将几个语句括起来成为一个复合语句。在{}后面不需要加括号。21if语句的嵌套——在if语句中又包含一个或多个if语句if()if()语句组1else语句组2elseif()语句组3else语句组422if()if()语句1elseif()语句2else语句3if()if()语句1elseif()语句2else语句3if与else的配对关系:1.从最内层开始,else总是与它上面最近(未曾配对)的if配对;2.如果if与else的数目不一样,为实现程序设计者的企图,可以加{}来确定配对关系。if(){if()语句1}elseif()语句2else语句323switch结构一般的格式:switch(表达式){case常量表达式1:语句组1[break;]case常量表达式2:语句组2[break;]…case常量表达式n:语句组n[break;][default:语句组n+1]}•执行过程:1.当switch后面“表达式”的值,与某个case后面的“常量表达式”的值相同时,就执行该case后面的语句(组);2.当执行到break语句时,跳出switch语句,转向执行switch语句的下一条。3.如果没有任何一个case后面的“常量表达式”的值,与“表达式”的值匹配,则执行default后面的语句(组)。然后,再执行switch语句的下一条。(注:方括号表示可选项)24switch结构case1case2caseN语句组1break?语句组2break?语句组N语句组N+1break?是是是是是是否否否否否否否……25说明1.switch后面的“表达式”,可以是整型、字符型和枚举型中的一种。2.每个case后面“常量表达式”的值,必须各不相同,否则会出现相互矛盾的现象(即对表达式的同一值,有两种或两种以上的执行方案)。3.case后面的常量表达式仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以必须加上break语句,以便结束switch语句。4.各case及default子句的先后次序,不影响程序执行结果。5.多个case子句,可共用同一语句(组)。6.用switch语句实现的多分支结构程序,完全可以用if语句或if语句的嵌套来实现。26【例3.9】main(){intscore,grade;printf(“Inputascore(0~100):”);scanf(“%d”,&score);grade=score/10;switch(grade){case10:case9:printf(“grade=A\n”);break;case8:printf(grade=B\n);break;case7:printf(grade=C\n);break;case6:printf(grade=D\n);break;case5:case4:case3:case2:case1:case0:printf(“grade=E\n”);break;default:printf(“Thescoreisoutofrange!\n”);}}[例3.6]从键盘上输入一个百分制成绩score,按下列原则输出其等级:90≤score,等级为A;80≤score90,等级为B;70≤score80,等级为C;60≤score70,等级为D;score60,等级为E。输入:85运行结果:grade=B输入:45运行结果:grade=E27以下是等级考试中的选择题对于整型变量x,下述if语句()与赋值语句:x=x%2==0?1:0;不等价。if(x%2!=0)x=0;elsex=1;if(x%2)x=1;elsex=0;if(x%2==0)x=1;elsex=0;if(x%2==1)x=0;elsex=1;以下的语句中,无内嵌执行语句的if语句是()。if(x==y)x+=y;if(xy&&x!=y);x+=y;if(x!=y)sca
本文标题:计算机二级第章 程序控制结构
链接地址:https://www.777doc.com/doc-3358090 .html