第三章-控制语句PPT课件_第1页
第三章-控制语句PPT课件_第2页
第三章-控制语句PPT课件_第3页
第三章-控制语句PPT课件_第4页
第三章-控制语句PPT课件_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章控制语句,程序的三种基本结构if条件分支语句switch多路开关语句循环语句循环嵌套break,continue和goto语句,2,3.1程序的三种基本结构,C语句的类型五类三种基本结构顺序、选择、循环,3,C程序结构,4,3.1.1C语句的类型,1.控制语句if().else.(条件语句)switch(多分支选择语句)for().(循环语句)while().(循环语句)do.while()(循环语句)continue(结束本次循环语句)break(中止执行switch或循环语句)goto(转向语句)return(从函数返回语句),5,3.1.1C语句的类型,2.函数调用语句函数调用语句由一个函数调用加一个分号构成。例:getchar();3.表达式语句表达式语句由一个表达式加一个分号构成。例:a=3;i+;x+y;,6,3.1.1C语句的类型,4.空语句空语句是只有一个分号的语句,不执行任何操作。形式为:;5.复合语句把一些语句用括起来称为复合语句(又称分程序),通常由多条语句构成,但在逻辑上可以看作一条语句。例:if(ab)t=a;a=b;b=t;,7,3.1.2三种基本结构,顺序结构例3.1,从键盘输入一个学生的学号、姓名和成绩,并输出。,8,3.1.2三种基本结构,2.选择结构,9,3.1.2三种基本结构,3.循环结构,10,3.2if条件分支语句,if语句的三种流程if语句嵌套条件运算符,11,3.2.1if语句的三种流程,1.单分支if语句if(表达式)语句例:if(100=score)cout最高分endl;if(-1=score)cout缺考=60)cout“合格endl;elsecout“不合格79)putchar(B);elseif(score69)putchar(C);elseif(score59)putchar(D);elseputchar(E);,15,4.关于if语句的说明3种形式的if语句都只是一条语句if后面都有表达式,一般为逻辑表达式或关系表达式,求解逻辑值。常犯的逻辑错误:if(n=10)cout*endl;改为:if(10=n)cout*0)/如果x大于0y=1;elseif(x0)/如果x小于0y=-1;else/如果x等于0y=0;couty=y0)/如果x大于0y=1;elseif(x0)/如果x小于0y=-1;else/如果x等于0y=0;couty=y0)y=1;elsey=-1;,也能实现吗?为什么?,20,条件运算符:?:条件表达式:由条件运算符和操作数构成的表达式格式:表达式1?表达式2:表达式3功能:若表达式1成立,则求解表达式2,并将表达式2的值作为整个表达式的值;否则,求解表达式3,并将表达式3的值作为整个表达式的值。,3.2.3条件运算符,21,例:将x、y、z三个变量中最大的值赋值给变量max。用if语句实现:if(xy)if(xz)max=x;elsemax=z;elseif(yz)max=y;elsemax=z;用条件运算符实现:max=xy?(xz?x:z):(yz?y:z);,3.2.3条件运算符,22,3.3switch多路开关语句,为什么使用?怎样正确使用?,23,3.3switch多路开关语句,流程图:,24,3.3switch多路开关语句,基本格式:switch(表达式)case常量表达式1:语句1;break;case常量表达式2:语句2;break;case常量表达式n:语句n;break;default:语句n+1;,25,3.3switch多路开关语句举例,例3.3,在“学生选课系统”中,根据用户输入的编号,输出需要调用的操作模块名称。根据学生的百分制分数值打出AE等级。switch(score/10)case10:case9:putchar(A);break;case8:putchar(B);break;case7:putchar(C);break;case6:putchar(D);break;default:putchar(E);,26,3.3switch多路开关语句,说明:switch后面表达式可以是C中任意类型的合法表达式,通常是整型或字符型,求解其实际值,而非逻辑值;每一个case后的常量表达式必须互不相同,否则在编译时系统会报错;break不是必不可少的;case和default的出现顺序不影响执行结果;最后一个情况(无论是case还是default)之后可以不使用break,流程自动结束switch语句。,switch(表达式)case常量表达式1:case常量表达式2:语句1;break;case常量表达式n:语句n;break;default:语句n+1;,27,3.4循环语句,while语句do-while语句for语句,28,3.4.1while语句,基本格式:说明:while后面的表达式可以是C中任意类型合法的表达式,先求其实际值,进一步求得其逻辑值;若表达式的值一开始就为0,则循环体将一次也不执行;当循环体由多个语句组成时,必须用把它们括起来,使它们形成复合语句;为了使循环最终能够结束,而不至于产生“死循环”,每执行一次循环体,表达式的值都应该有所变化。,while(表达式)语句(组);,29,3.4.1while语句举例,利用以下公式计算的值,要求精度控制在10-6内。算法分析:每次得到新的一项,并累加。关键:如何得到新项?,30,3.4.1while语句举例,NS图:,31,3.4.1while语句举例(编程实现),.doublepi=0.0;intnum=1;intden=1;doubleitem=1.0;while(fabs(item)1e-6)pi=pi+item;num=-num;den=den+2;item=(double)num/den;pi=pi*4;coutpi=pin;cout0);coutscore;/输入当前考生成绩sum=sum+score;/累加avg=sum/num;/求平均值cout平均分是avgendl;.,38,3.4.4while,do-while和for语句的比较,一般情况下,三种循环语句是可以互换的;一般来说,for语句用于循环次数明确的情况,而while和do-while语句用于循环次数不确定但循环条件明确的情况;用for循环时,循环变量的初始化可以由表达式1来实现,而用while和do-while循环时,循环变量的初始化需要在语句之前完成。for循环更加灵活。,for(i=1,j=1;i10;i+)j+;,for(i=1,j=1;i10;i+,j+);,39,3.5循环嵌套,一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。,40,3.5循环嵌套,while()while(),while()dowhile();,while()for(;),41,3.5循环嵌套,dodowhile();while();,dowhile()while();,dofor(;)while();,42,3.5循环嵌套,for(;)dowhile();,for(;)while(),for(;)for(;),43,3.5循环嵌套举例,请输出九九乘法表。算法分析:可使用循环依次输出九九表的各行,表每行的输出又需要一个循环双重循环外层循环变量i代表被乘数内层循环变量j代表乘数外层循环依次处理各行,内层循环中依次输出当前行的每一个乘法口诀,44,3.5循环嵌套举例(编程实现),请输出九九乘法表。.inti=0;/循环变量,控制行intj=0;/循环变量,控制列for(i=1;i=9;i+)/依次处理各行for(j=1;j=9;j+)/依次处理各列couti*j=i*j;coutn;coutn=;.,3.6.1break语句举例2(编程实现),51,.for(i=2;i=n;i+)/对n的所有可能正因子i进行循环while(n!=i)/n不等于其正因子i时循环if(n%i=0)/如果i是n的正因子couti;/输出正因子in=n/i;/n除以当前正因子elsebreak;/i不是n的因子,跳出当前的while循环coutnendl;/输出最后一个因子.,3.6.1break语句举例2(编程实现),52,3.6.2continue语句,用法:只能用在循环语句中。作用:结束本次循环,立即开始执行下一次循环。,53,编程计算1100之间所有偶数的和。.intn=0;/循环变量,当前要累加的数intsum=0;/累加和,初始化为0for(n=1;n=100;n+)/对1100中每个数进行循环if(n%2!=0)/如果n不是偶数continue;/跳过累加sum=sum+n;/累加当前数字cout2+4+100=sumendl;.,3.6.2continue语句举例,54,基本结构:goto标识符;作用:与条件判断相结合可以构成循环结构或跳出循环,但非实现循环结构的专用语句。优点:灵活,尤其在多层循环嵌套的内层中跳出的情况下,goto语句可方便实现;缺点:可能会使程序流程无规律,可读性差。,3.6.3goto语句,55,用逐个判别法求出250以内的所有质数。算法分析:可使用双重循环:外循环对250的所有数i进行枚举;内循环对i的所有可能正因子j进行枚举,如果某个j能整除i,则转向对非质数处理的相应语句;如果所有的j均不能整除i,则i是质数,输出即可。,3.6.3goto语句举例,56,#include/包含输入输出接口文件usingnamespacestd;/引用标准命名空间intmain()/定义主函数inti=0;/循环变量,枚举所有的数intj=0;/循环变量,枚举所有的正因子intn=0;/质数的个数,初始为0.,3.6.3goto语句举例(编程实现),57,for(i=2;i=50;i+)/循环处理所有的数for(j=2;j*j=i;j+)/循环处理i的所有可能正因子if(i%j=0)/如果j是i的因子gotonotPrime;/转向非质数处理语句couti;/输出当前质数in+;/质数个数增if(n%5=0)/如果n是5的倍数,本行已输出5个数coutmaxScore)/如果当前分数大于最高分maxScore=score;/则将最高分更新if(scorescore;/输入下一个分数sum=sum-maxScore-minScore;/去掉一个最高分和最低分cout最后得分:sum/(i-2)endl;return0;,例3.11(编程实现),63,写一个程序,打印输入中的单词,每行打印一个单词。(假定空格和制表位都是单词间的分隔符)算法分析:在一串字符中,一个新单词开始的特征是当前字符不是空白字符,而它的前一个字符是空白字符;在一个单词当中再次遇到空白字符时,意味着一个单词的结束。用变量inword来记录当前字符是否在一个单词中。,例3.13,64,#includeusingnamespacestd;constintYES=1;/字符状态,当前字符在单词中constintNO=0;/字符状态,当前字符不在单词中intmain()/定义主函数charc;/当前字符cintinword=0;/标记当前字符是否在单词中while(c=getchar()!=n)/循环读入字符,至遇到回车符为止if(c=|c=t)/如果当前字符为单词分隔符if(YES=inword)/判断当前字符是否在单词中coutendl;inword=NO;.,例3.13(编程实现),65,.elseif(NO=inword)/处理新单词的第一个字符inword=YES;coutc;else/处理单词中的字符coutc;coutendl;return0;/主函数结束,例3.13(编程实现),66,1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论