C语言程序控制结构PPT课件下载推荐.ppt
《C语言程序控制结构PPT课件下载推荐.ppt》由会员分享,可在线阅读,更多相关《C语言程序控制结构PPT课件下载推荐.ppt(100页珍藏版)》请在冰豆网上搜索。
构成标号语句,标示流程的转向点;
构成循环语句中空循环体。
例如:
while(getchar()!
=n);
只要从键盘上输入的字符不是回车则重新输入。
4.1.3复合语句,用括起来的一组语句。
一般形式:
执行语句;
说明:
“”后不加分号其中最后一个语句后也要加分号语法上和单一语句相同复合语句可嵌套,如:
z=x+y;
t=z/100;
printf(%f,t);
如:
4.1.4控制语句,控制语句:
完成一定的控制功能。
if(xy)z=x;
elsez=y;
4.2顺序结构,流程图流程图是表示算法的一种工具,用一些图框来表示各种操作。
一个流程图包括以下几部分:
表示相应操作的框;
带箭头的流程线;
框内外必要的文字说明。
顺序结构,常用的流程图符号:
N-S流程图:
完全去掉了流程线,算法的每一步都用矩形框描述,把一个个矩形框按执行的次序连接起来就是一个完整的算法描述。
顺序结构,结构化程序的三种基本结构顺序结构:
按书写顺序执行的语句构成的程序段,选择结构循环结构,例4.1输入任意两个整数,求它们的和及平均值。
要求平均值取两位小数输出。
/例4.1#include#includevoidmain()intnum1,num2;
floatsum,aver;
printf(Pleaseinputtwointegers:
n);
scanf(%d,%d,运行情况:
30000,5005sum=35005,aver=17502.50,例4.2给定一个三位正整数,分别输出其个位数、十位数和百位数。
#includevoidmain()intm,m0,m1,m2;
printf(“Inputanumber(100999):
”);
scanf(%d,运行结果:
Inputanumber(100999):
263输出:
3,6,2,例4.3取一个16位的二进制数a的7、6、5、4四个位,如图4-2中加阴影的部分。
voidmain()unsigneda,b,c,d;
scanf(%x,/*以十六进制输出a和结果d*/,例4.4求ax2+bx+c=0方程的根。
a,b,c由键盘输入,设。
一元二次方程式的根为x1=x2=可以将上面的分式分为两项:
p=,q=,则x1=p+q,x2=p-q。
顺序结构,#include#includevoidmain()floata,b,c,disc,x1,x2,p,q;
scanf(a=%f,b=%f,c=%f,运行情况:
输入:
a=1,b=3,c=2输出:
x1=-1.00x2=-2.00,4.3选择结构,选择结构是指在程序执行过程中,根据指定条件的当前值在两条或多条路径中选择一条执行。
C语言的选择控制语句有两条:
条件选择语句:
if语句开关分支语句:
switch语句,4.3.1if语句,1、if格式(单分支语句)if(判断表达式)语句1;
语句1可以是一条语句或复合语句。
注意:
满足条件时想要执行多条语句一定要用复合语句,当判断表达式值不为零(即”真”),则执行语句1,再执行其后继语句;
否则,不执行语句1,执行其后继语句。
单分支语句,判断表达式应该是具有一定意义、有实用价值的表达式,因此,最常用关系表达式和逻辑表达式来表达,例如:
if(a=b)if(a=0)等价于if(!
a)if(a!
=0)等价于if(a)if(a=5&
a=10),例:
输入一个整数,求绝对值.main()inti;
scanf(%d,例:
执行下列程序段后a的值是_。
inta=3;
if
(2)a=5;
单分支语句,#includemain()charc;
printf(inputaletter:
);
c=getchar();
if(c=A,例4.5从键盘输入一个字母,以小写字母形式输出该字母,单分支语句,例4.6从键盘输入两个整数,按升序输出这两个数。
#includevoidmain()inta,b,t;
scanf(%d%d,例:
输入三个数a,b,c,要求按由小到大的顺序输出。
Ifab将a和b对换Ifac将a和c对换Ifbc将b和c对换,单分支语句,单分支语句,#includevoidmain()floata,b,c,t;
scanf(%f%f%f,必不可少,否则,会出现逻辑错误!
2、if(表达式)语句1else语句2,双分支if-else语句,例:
if(xy)printf(“%d”,x);
elseprintf(“%d”,y);
双分支if-else语句,说明:
在if和else后面可以只含有一条语句,也可以含有用花括号括起来的复合语句。
如:
if(a+b)c,例:
输入两个数并判断两数是否相等。
#includevoidmain()inta,b;
printf(Enterintegera:
Enterintegera:
12Enterintegerb:
12a=b,运行结果:
9a!
=b,双分支if-else语句,分析以下程序的输出结果:
(1)#includevoidmain()inta,b;
scanf(%d,
(2)#includevoidmain()inta,b,t;
scanf(%d%d,(3)#includevoidmain()intx,y;
scanf(%d,(4)程序输出结果#includevoidmain()intx,y;
scanf(%d,3.多分支语句,几种形式:
3、if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3elseif(表达式m)语句melse语句n,多分支语句,例:
if(number500)cost=0.15;
elseif(number300)cost=0.10;
elseif(number100)cost=0.075;
elseif(number50)cost=0.05;
elsecost=0;
多分支语句,多分支语句,匹配规则:
Else总是与它上面的,最近的,统一复合语句中的,未配对的if语句配对。
当if和else数目不同时,可以加花括号来确定配对关系。
例:
if(a=b)if(b=c)printf(“a=b=c”);
elseprintf(“a!
=b”);
修改:
-1(x0)算法1:
算法1:
输入x输入x若x0,则y=1若x=0,则y=0输出y若x0,则y=1输出y,多分支语句,程序#includevoidmain()intx,y;
scanf(“%d”,程序1:
程序2:
if(x=0)y=-1;
if(x0)y=1;
elseelsey=0;
if(x=0)y=0;
elsey=-1;
elsey=1;
程序3:
程序4:
y=-1;
y=0;
if(x!
=0)if(x=0)if(x0)y=1;
elsey=0;
正确,正确,上例中的程序段有四个,请判断哪个是正确的?
X0时,y=0,X=0时,y=-1,多分支语句,例4.7:
输入百分制成绩,要求输出相应的五级制成绩。
百分制成绩与五级制成绩之间的转换标准为:
90分以上为“A”,80-89分为“B”,70-79分为“C”,60-69分为“D”,60分以下为“E”。
If语句嵌套,voidmain()intscore;
printf(nPleaseinputthescore(0-100):
scanf(%d,多分支语句,例4.8分段函数定义如右:
根据所输入的x的值,求函数值。
main()floatx,y;
scanf(%f,4.3.2switch语句,switch语句的格式:
switch(表达式)case常量表达式:
语句break;
case常量表达式:
default:
语句,执行过程:
当表达式的值与某一个case后面的常量表达式的值相等时,就从此case后面的语句开始执行下去,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。
switch语句,switch语句,执行流程:
首先计算switch圆括号中表达式的值,然后将结果值按前后顺序依次与各个case后的常量表达式进行比较。
当表达式的值与某一个case后面的常量表达式的值相等时,就执行该case后边的语句组k,接着如果遇到break语句,则结束整个switch语句(即退出switch)。
如果不遇到break语句,则按顺序执行下面其他case后边的语句组,直至遇到break语句或最后边的“”为止,才结束switch语句当结果值与常量表达式k的值都不相等时,若有default,则执行其后语句;
若无default,则什么都没执行,switch语句,说明:
1)switch关键字,case也是关键字,与其后面的常量表达式合称case语句标号,常量表达式类型必须与switch后面表达式类型相匹配,且各case语句标号的值各不相同,不能重复;
default也是关键字,起语句标号的作用,代表除了以上所有case标号之外的那些标号;
2)语句1、语句2可以是一条语句,也可以是若干条,在必要时,case语句标号后的语句可以省略不写;
3)switch的表达式通常是一个整型或字符型变量,也允许枚举型变量,其结果为相应的整数、字符或枚举常量;
4)break语句不是一定需要加上,执行完一个case后面的语句,若没有遇到break,就自动进入下一个case继续执行,而不再判断是否与之匹配。
当程序在执行时,如果输入的是A,#includestdio.hmain()chara;
a=getchar();
switch(a)case65:
printf(%c,A);
case66:
printf(%c,B);
default:
printf(%sn,other);
运行结果:
ABother,当程序在执行时,屏幕上输出为:
#includestdio.hmain()intk=2;
switch(k)case1:
printf(%dn,k+);
break;
case2:
printf(%d,k+);
case3:
cade4:
printf(Full!
n“);
23,switch语句,例:
要求按照考试成绩的等级输出百分制分数段,用switch语句实现,应写为:
switch(grade)caseA:
printf(85100n);
caseB:
pri