《基本控制结构》PPT课件.ppt

上传人:tia****nde 文档编号:12723272 上传时间:2020-05-19 格式:PPT 页数:86 大小:763.50KB
返回 下载 相关 举报
《基本控制结构》PPT课件.ppt_第1页
第1页 / 共86页
《基本控制结构》PPT课件.ppt_第2页
第2页 / 共86页
《基本控制结构》PPT课件.ppt_第3页
第3页 / 共86页
点击查看更多>>
资源描述
C语言程序设计,第4章基本控制结构,顺序结构程序设计选择结构程序设计循环结构程序设计应用举例程序设计,讲课提纲,C语言语句类型:1.表达式语句在一个表达式的后面加一个分号“;”就构成表达式语句。例如:i=i+2是表达式,而不是语句。i=i+2;是语句。注:任何表达式都可以加上分号而成为语句2.函数调用语句在函数调用表达式后面加分号就构成了函数调用语句。例如:printf(thisisacstatement);3.控制语句C语言中共有9种流程控制语句:if().else、for()4.空语句只有1个分号的语句称为空语句。如:;即是一个空语句,它什么也不做。5.复合语句由一对大括弧“”把若干语句括起来构成的语句称为复合语句。复合语句在语法上相当于1个单一语句,在一对花括号内的语句数量不限。例如:t=a;a=b;b=t;,4.1顺序结构,顺序结构程序的一般算法描述,可用:变量初始化赋值语句输入函数调用语句,注意各个语句的顺序,例:从键盘输入a、b的值,输出交换以后的值。思路:交换变量a和b的值,不能只写下面两条赋值语句a=b;b=a;,?,正确的交换方法:c=a;a=b;b=c;,main()inta,b,c;printf(“输入a,b:);scanf(%d,%d,程序运行情况如下:输入a,b:32,57交换前:a=32b=57交换后:a=57b=32,例:已知三条边a、b、c,求三角形面积。计算三角形面积的海伦公式:,其中:,设定义:整型变量a、b、c实型变量s、area,#includemath.hmain()inta,b,c;floats,area;scanf(%d,%d,%d,程序运行情况如下:3,4,5area=6.000,实际上还需要判断a、b、c是否能构成三角形,即应该进行选择判断处理,例:输入小写字母,输出大写字母。,#includemain()charch1,ch2;ch1=getchar();ch2=getchar();/*scanf(“%c%c”,*/,关系运算符和表达式关系运算符种类:=!=结合方向:自左向右优先级别:,例ca+b/c(a+b)ab!=c/(ab)!=ca=bc/a=(bc),关系表达式的值:是逻辑值“真”或“假”,用1和0表示,4.2选择结构,逻辑运算符和表达式逻辑运算符种类:!做为运算结果时:0表示“假”,1表示“真”。,4.2选择结构,优先级:,结合方向:,(ab)printf(Enterx,4.2.2if语句的三种形式,例2键盘输入一个实数,要求输出它的绝对值。编写程序如下:main()doublex;scanf(%lf,4.2.2if语句的三种形式,2、缺省else子句的if结构(单分支结构)格式:if(表达式)语句或:if(表达式)语句执行过程:,4.2.2if语句的三种形式,用不带else的if结构完成上两题。1、输入两数,输出最大的。2、输入任一数,输出其绝对值。,4.2.2if语句的三种形式,3、ifelseif阶梯结构(多分支结构)格式:if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3elseif(表达式n-1)语句n-1else语句n,4.2.2if语句的三种形式,4.2.2if语句的三种形式,If后续语句,执行过程:,例4编写程序,根据输入的学生成绩,给出相应的等级。假设等级划分如下:90100分等级为A;8089分等级为B;7079分等级为C;6069分等级为D;059分等级为E。,4.2.2if语句的三种形式,main()intscore;printf(Enterscore:);scanf(%d,4.2.2if语句的三种形式,条件运算符和条件表达式,条件表达式一般形式:expr1?expr2:expr3执行过程:,条件运算符(?:)条件运算符由两个运算符组成,是C语言提供的唯一的三目运算符。,说明:(1)条件运算符优先于赋值运算,但低于逻辑运算、关系运算和算术运算。(2)条件运算符的结合方向为“自右至左”。,如x?abxy?115,条件运算符和条件表达式,如ad?c:dad?c:d),(3)条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同。若不同取其中较高类型。,由条件表达式组成的赋值语句事实上就是一个ifelse语句的简写。相当于:if(ab)max=a;elsemax=b;推广开来,若在ifelse语句中,当表达式为“真”和“假”时,都只执行一个赋值语句且给同一个变量赋值时,均可以用简单的条件运算符来处理。,条件运算符和条件表达式,例输入一字符,若是大写字母,将其转换成小写字母;若不是则不转换。然后输出最后得到的字符。程序如下:main()charch;scanf(“%c”,由条件表达式构成的选择结构,1、在if子句中嵌套具有else子句的if语句格式:if(表达式1)if(表达式2)语句1else语句2else语句3即:当表达式1的值为非0时,执行内嵌的ifelse语句;当表达式1的值为0时,执行语句3。,4.2.3if语句的嵌套,2、在if子句中嵌套不含else子句的if语句【格式】if(表达式1)if(表达式2)语句1else语句2else的配对原则:与前面最近出现的未配对的if配对。,4.2.3if语句的嵌套,3.在else子句中嵌套if语句语句形式有如下两种:(1)嵌套if语句带有else:if(表达式1)语句1elseif(表达式2)语句2else语句3,4.2.3if语句的嵌套,(2)嵌套if语句不带else:if(表达式1)语句1elseif(表达式2)语句2,4.2.3if语句的嵌套,试用if-else编程,实现如下赋值:,例写程序,判断某一年是否闰年。闰年的条件是:能被4整除,但不能被100整除的年份都是闰年,如1996年,2004年是闰年;或者:能被400整除的年份是闰年。如1600年、2000年是闰年。不符合这两个条件的年份不是闰年。,if语句应用举例,假设用整型变量year来代表年份,闰年条件概括为如下一个逻辑表达式:year%4=0scanf(%d,if语句应用举例,返回,Switch语句是多分支选择语句。用来实现多分支选择结构。【格式】switch(表达式)case常量表达式1:语句1case常量表达式2:语句2case常量表达式n:语句ndefault:语句n1,4.2.4switch语句,说明:(1)Switch是关键字,其后内容用定界。(2)switch后的(表达式)可为任何类型,且case后的常量表达式的类型应与表达式的类型相同。且各case间的值也应不同。(3)case语句标号后的语句可以是一条语句,也可是多条语句,可不用括起。(4)每个case仅是一个入口标号,并不确定执行的终止点。如无break;语句则将一直执行到switch的最后。注意break;语句的作用。default也是关键字,其可有可无,分析区别。(5)可多个case语句共用一组执行语句。(6)switch语句可嵌套。,4.2.4switch语句,例用switch改写上面的学生成绩等级题。90100分等级为A;8089分等级为B;7079分等级为C;6069分等级为D;059分等级为E。试分析下列几种情况的运行结果:,4.2.4switch语句,1、main()intscore,grade;printf(Pleaseinputscore:);scanf(%d,4.2.4switch语句,4.2.4switch语句,2、main()intscore,grade;printf(Pleaseinputscore:);scanf(%d,3、所有case后均加break;语句case10:case9:printf(gradeAn);break;case8:printf(gradeBn);break;case7:printf(gradeCn);break;case6:printf(gradeDn);break;case5:case4:case3:case2:case1:case0:printf(gradeEn);break;,4、case嵌套例main()intx=1,y=0,a=0,b=0;switch(x)case1:switch(y)case0:a+;break;case1:b+;break;case2:a+;b+;break;case3:a+;b+;printf(“na=%d,b=%d”,a,b);,4.2.4switch语句,运行结果:a=2,b=1,循环结构是结构化程序设计的三种基本结构之一C语言可实现循环的语句:用goto和if构成循环(限制使用)while语句do-while语句for语句按一定条件重复执行某段程序即是循环。,4.3循环结构,格式:while(表达式)循环体语句;说明:While后的表达式,可为任意合法的表达式循环体可为任意类型语句若循环体内需要多个语句,应用复合语句形式,4.3.1while循环,执行过程:,4.3.1while循环,用法说明:当型循环结构,先判断表达式,后执行循环体循环体内必须改变循环条件,使其趋于结束循环体有可能一次也不执行下列情况,退出while循环条件表达式不成立(为零)循环体内遇break,return,goto无限循环:while(1)循环体;此时应与break;配合使用,使循环结束。,4.3.1while循环,举例:1、输出一行星号:*(1)printf(“*n”);(2)用printf(“*”)时,可用循环完成。main()inti=1;/*i称为循环变量,为其赋初值*/while(i=5)/*i5称为循环条件,也称循环终值*/printf(“*”);i+;/*i+循环变量变化使循环条件趋于假,使整个循环结束。*/printf(“n”);,S=0,S=0i=1S=0+1=1i=1+1=2S=1+2=3i=2+1=3i=99+1=100S=4950+100=5050,i=1,i=1,i=2,S=1,i=2,S=3,2、用while循环求,3、输出100以内奇数。要求:每个数字占4列且每行输出10个数。4、编程求:1*2*3*n,即n!(n的值由键盘输入)或求:12+22+32+n25、求:100以内偶数和或100以内奇数和。6、求:或求:,7、利用while循环显示ASC码表中的可见字符。main()main()unsignedcharch;unsignedcharch;ch=32;inti=1;ch=32;while(ch)while(ch)printf(%c,ch);printf(“%3c”,ch);ch+;i+;if(i%20=0)printf(“n”);ch+;,返回,do-while循环的格式:do循环体语句;while(表达式);说明:do和while联合使用以do开始、while结束,“;”不可丢While后的表达式,可为任意合法的表达式循环体可为任意类型语句,4.3.2dowhile循环,do-while循环的执行流程:,4.3.2dowhile循环,用法说明:先执行循环体,后判断表达式循环体内必须改变循环条件,使其趋于结束至少执行一次循环体do-while可转化成while结构,4.3.2dowhile循环,执行流程:,表达式,循环体,假(0),真(非0),循环体,main()inti,sum=0;i=1;dosum+=i;i+;while(i=100);printf(%d,sum);,例用do-while循环求,4.3.2dowhile循环,例while和do-while循环的比较,main()intsum=0,i;scanf(%d,main()intsum=0,i;scanf(%d,返回,4.3.2dowhile循环,for循环的基本格式:,4.3.3for循环,for(表达式1;表达式2;表达式3)循环体语句;,“灵活”循环次数确定或不确定,执行流程图:,例用for循环求,main()inti,sum;sum=0;for(i=1;i=100;i+)sum+=i;printf(“sum=%d,sum);,表达式1;while(表达式2)循环体语句;表达式3;,for语句一般应用形式:,for(循环变量赋初值;循环条件;循环变量增值)循环体语句;,说明:for语句中三个表达式类型任意,都可省略,但分号“;”不可省无限循环:for(;)for语句可以转换成while结构循环体语句可以是一条语句,也可以是复合语句。,4.3.3for循环,分析如下程序:,main()inti;for(i=0;i10;i+)printf(“*”);,main()inti=0;for(;i10;i+)printf(“*”);,main()inti;for(i=0;i10;)printf(“*”);i+;,main()inti=0;for(;i10;)printf(“*”);i+;,main()inti=0;for(;i10;printf(“*”),i+);,三种循环可以互相代替循环变量初始化的位置控制循环变量改变,使循环趋于结束循环体都可以使用复合语句可以用break语句跳出循环,用continue语句结束本次循环,三种循环的比较说明,返回,循环的嵌套三种循环可互相嵌套,层数不限,设置不同循环变量外层循环可包含两个以上内循环,但不能相互交叉嵌套循环的执行流程,4.3.4循环的嵌套,(1)while()while(),(2)dodowhile();while();,(3)for(;)for(;),(4)while()dowhile();,(5)for(;)while(),(6)dofor(;)while();,二重循环的结构(for语句)for(表达式1;表达式2;表达式3)语句1;for(表达式4;表达式5;表达式6)语句2;语句3;,1.概念在一个循环的循环体中,又包含另外的循环(多重循环)。如:for(i=0;i2;i+)for(j=0;j3;j+)printf(%d,%dn,i,j);,4.3.4循环的嵌套,2.双重循环的执行流程例、写出下列程序的运行结果。main()inti,j;for(i=0;i2;i+)for(j=0;j3;j+)printf(%d,%dn,i,j);printf(*n);,则运行结果为:0,00,10,2*1,01,11,2*,例1使用双层for循环打印下面的图形,*,main()inti,j,k;for(i=0;i=4;i+)for(k=1;k=i;k+)printf();for(j=0;j=4;j+)printf(*);printf(n);,4.3.4循环的嵌套,2、输出如下图形:*1a*222bbb*33333ccccc*4444444ddddddd3、输出九九乘法表,读程序写结果:main()inti,j;for(i=1;i=4;i+)for(j=1;j=2*i-1;j+)printf(“%d”,i);printf(“n”);,使用格式:break;使用说明:在循环语句和switch语句中,终止并跳出循环体或开关体break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中,4.3.5break和continue,返回,break的流程控制:,4.3.5break和continue,例使用break语句跳出循环体,main()inti;floatarea;for(i=1;i100)break;printf(i=%d,area=%.2fn,i,area);,运行结果:i=6,area=113.04,4.3.5break和continue,例for(i=1;i3)break;printf(%d,i);则运行结果为1,2,3,4.3.5break和continue,使用格式:continue;使用说明:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断仅用于循环语句中,4.3.5break和continue,continue的流程控制:,4.3.5break和continue,如for(i=1;i=5;i+)if(i=2)continue;printf(%d,i);则运行结果为3,4,5,例输出0100之间的偶数main()intx;for(x=0;x=100;x+)if(x%2=1)printf(%d,x);,continue语句后只终止本次循环;break语句后将无条件地结束整个循环,返回,4.3.5break和continue,例1求Fibonacci数列:1,1,2,3,5,8,的前40个数,每行输出5个数。,f1=1(n=1)f2=1(n=2)fn=fn-1+fn-2(n3),112358132134558914423337761098715972584418167651094617711286574636875025121393196418317811514229832040134626921783093524578022887922746514930352241578173908816963245986102334155,位置号:1234567数列:11235813,第4次循环(i=6):,第1次循环(i=3):,f1,f2,f,+,+,+,第2次循环(i=4):,第3次循环(i=5):,+,+,第5次循环(i=7):,main()inti;longf1,f2,f;f1=1;f2=1;printf(n%12ld%12ld,f1,f2);for(i=3;i=a,返回,例4百元百鸡问题(100元买100只鸡,公鸡5元1只、母鸡3元1只、小鸡1元2只)#includemain()intgj,mj,xj;for(gj=0;gj=20;gj+)for(mj=0;mj=33;mj+)xj=100-gj-mj;if(gj*5+mj*3+xj/2=100,返回,例5有一组楼梯:一次迈5层最后余下3层,一次迈4层最后余下2层,一次迈3层最后余下1层,问该组楼梯层数?#includemain()intn=1;while(!(n%5=3,返回,例6猜数游戏。计算机随机产生一个100以内的整数,用户猜数,最多猜10次,每次给出大了或小了的提示。最后根据猜的次数给出相应的评价。如果10次还没有猜对,则输出“很遗憾,你已经没有机会了!游戏结束!”。,返回,#include#include#includemain()inti,magic;intguess;/*人猜的数*/srand(time(NULL);/*产生随机函数的种子*/magic=rand()%100;/*计算机产生随机数*/for(i=1;imagic)printf(大了,再小点!n);elseif(guess10)printf(t很遗憾,你已经没有机会了!游戏结束!n);,While循环是“当型”循环,先判断后执行do-while语句先执行后判断For语句使用灵活三种循环可以替换,可以嵌套注意:循环变量初值、循环条件、循环体的控制break语句用于结束整个循环;continue语句用于结束本次循环,小结,返回,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!