传智播客C语言入门4_第1页
传智播客C语言入门4_第2页
传智播客C语言入门4_第3页
传智播客C语言入门4_第4页
传智播客C语言入门4_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

传智播客C语言入门教程(4),讲师:尹成QQ:77025077博客:,C语言,C+语言,传智播客,高薪就业,2.结构化程序设计的三种结构,3.顺序结构,4.选择结构,5.循环结构,传智播客C语言入门教程(4)大纲,1.程序的最小单元-语句,C语言课程概述,6.初学者答疑,4.1程序的最小独立单元语句,如果把写程序和写小说类比,变量常量等可以看成是字和词,函数可以看成是一个段落,运算符等可以看作是字词的组合方式(规则),那么,字词组成的句子就是小说的最小独立单元,表达了一定的意思,同样,程序的最小独立单元是“语句”,每个语句表达出完整的意义。,数据说明数据的描述(数据的名称、类型和初值等),为解决某一问题而设计的一系列有序指令的集合。,程序,语句如何处理数据的描述,4.1.1主要的语句类型,4.2结构化程序设计,结构化程序设计的思想是:把一个需要解决的复杂问题分解成若干模块来处理,每个模块解决解决一个小问题,这种分而治之的方法大大降低了程序设计的难度。结构化程序设计的核心问题是算法和控制结构。,4.2.1算法是啥玩意,所谓算法,指的是解决问题时的一系列方法和步骤。算法的思维充溢着生活的各个方面,比如我们要去北京旅游,会问一些问题:“坐什么交通工具”,“在哪里中转”,“是否要去奥运现场”等等,这都包含着算法,可见,算法步骤间有一定的逻辑顺序,按这些顺序执行步骤便可以解决问题,达到目的。这种逻辑顺序,在C语言中体现为控制结构。,4.2.2算法的表示,抛开那些厚厚的算法教科书,不去谈那些深奥无比的属性,本节讨论与算法使用最为相关的问题:算法如何表示,原则上,自然语言也可用于算法表示,但由于自然语言的多义性,不同的人对同一个版本的描述可能有不同的理解,因此,一般不采用自然语言来描述算法,要求采用一种精确的,无歧义的机制。有两种广泛使用的算法表示方法,一是伪代码法,二是流程图法。,4.2.3算法的伪代码表示,伪代码是对自然语言表示的改进,给自然语言加上了形式化的框架,以一种简单、容易理解的方式描述算法的逻辑过程,用伪代码表示的算法无二义性,易于理解。使用伪代码表示算法无需遵守严格的语法规则,只要完整表达了意思,书写清晰,容易阅读和读懂即可,举例来说:用户输入如果(用户输入的是字符Y)执行B操作否则执行C操作上述代码便采用了伪代码表示方式,完成了一种简单的分支选择结构。,4.2.4算法的流程图表示,流程图法是种有效、直观的算法表示方法,利用不同的框代表不同的操作,利用有向线段表示算法的执行方向,现在通用的流程图符号画法采纳的是ANSI(美国国家标准化协会)的标准,如所示。,4.2.5-3种控制结构,结构化程序设计提供了3种控制结构,分别是顺序结构、分支结构和循环结构,早在1966年,牛人Bohm和Jacopini便证明了,用此3种基本结构可以构成任意复杂的算法。3种基本控制结构如所示。,4.2.6取三个数种的最小数,4.3顺序结构设计,4.3.1顺序结构案例实践,从1加到5,分步顺序执行,inti=0;i+=1;i+=2;i+=3;i+=4;i+=5;,4.4.1分支结构,实现单分支选择的形式,实现双分支选择的形式,实现多分支选择的形式,4.4.2if语句之单分支选择结构,if(表达式)语句,15,一般形式:说明:当表达式的结果为非0时,执行后面的语句,否则不执行。,4.4.3单分支选择应用举例,将输入的三个数按照从小到大的顺序输出。,例,#includevoidmain()floata,b,c,t;scanf(%f%f%f,4.4.4大括号与if语句,if结构后的花括号并非必须,if结构后的花括号实际上是个“块语句”,如果没有花括号,则此时默认的“块语句”只包含紧跟在if后的一条语句,试比较:if(表达式)语句1;语句2;语句3;if(表达式)语句1;语句2;语句3;,4.4.5if语句之双分支选择结构,if(表达式)语句1else语句2,一般形式:说明:当表达式的值为非0时,执行语句1,否则执行语句2。,4.4.6双分支选择应用举例,显示从终端输入的两个整数中绝对值较大的一个。,例,#includevoidmain()intx1,y1,x2,y2;scanf(%d,%d,运行情况:23,3434,x2=x1=0,4.4.10if语句的嵌套,在if语句中又包含一个或多个if语句称为if语句的嵌套。,if()if()语句1else语句2elseif()语句3else语句4,if()if()语句1elseif()语句2else语句3,注意if与else的配对关系。,4.4.11分支语句嵌套,24,解一元二次方程ax2+bx+c=0。,例,分析,一元二次方程的解的情况有下列几种可能:a=0,不是二次方程;b2-4ac=0,有两个相等实根:b2-4ac0,有两个不等实根:b2-4ac0?,复根的实部p和虚部q:,输出两个虚根:,p+qi,p-qi,输出两个实根:,x1,x2,真,真,真,假,假,假,4.4.13switch语句,switch(表达式)case常量表达式1:语句1case常量表达式2:语句2case常量表达式n:语句ndefault:语句n+1,一般形式:,4.4.14-Switch语句,说明:switch语句中的“表达式”和case后面的“常量表达式”的结果值的类型应该一致。其类型可以是除实型以外的任何类型(如整型、字符型、枚举类型)。每一个case后的常量表达式的值必须互不相同。执行完一个case后面的语句后,流程控制到下一个case继续执行。因此,多个case可共用一组语句。如:switch(c)caseA:caseB:语句;;switch语句中可以不含default分支;default分支并不限定在最后,几个case分支也没有顺序区别,但必须做适当处理,否则会影响执行结果。,4.4.15break语句,一般形式:功能:终止switch语句的执行。为了执行完某个分支后跳出switch结构,应在其后加上break语句。,break;,4.4.16-break的怪事,把代码中的break都删除或注释掉后,编译链接并不会出错,只是执行时,结果不太一样。我们亲自动手实践一下。这就是说,如果不使用break语句,那么从与表达式的值匹配的那个case语句开始后的所有代码段都会被执行,每个case语句相当于入口、开关或者说是进入的钥匙,这便是开关语句这个名称的由来。,4.4.17default语句,当所有case常量表达式与switch后表达式的值都不匹配时,default语句被执行,实际上,default语句也不是必须的,当default语句省略时,表示“缺省情况下什么也不做”。某些编译器可能会对default语句的缺失给出警告,从防错意义上说,即使什么也不做,最好也把default语句写上,采用下述形式:default:;/*(空语句。不要忘记分号)*/default语句并不一定放在switch结构的最后,default语句和各个case语句的顺序完全可互换而不影响结果,当default语句不在switch结构的最后时,不要忘记使用break。,4.4.18if与Switch语句进行比较,switch结构只进行相等与否的判断,而ifelse结构还可以进行大于小于等范围上的判断。此外,switch无法处理浮点数,只进行整数的判断,而且,case标签值必须是常量,如果涉及到浮点数和变量的判断,应当使用ifelse结构。应当从可读性和程序效率多方面综合考虑,适当搭配两种结构,方能写出高质量的代码。,4.5一遍又一遍循环结构,所谓“循环”,就是对某块代码段重复多次地执行,循环结构是C语言程序书写中常用的一种重要控制结构,C语言提供了3种循环结构,分别是while结构、dowhile结构和for结构.循环结构有两大要素:循环条件和循环体,当满足某个条件时,重复执行某些动作,直到该条件不再满足,这个表述很好地体现了循环条件和循环体的关系。构造循环时,首先要明白要做什么,即“循环体是什么”,这是和程序的目的相关的,知道要干什么了还不够,还要明白什么时候开始做,什么时候停,如果没有合理设定循环条件,很容易造成程序死循环,甚至是资源耗尽导致电脑死机,4.5.1循环结构划分,不成立,成立,当型循环,直到型循环,4.5.2循环语句简介,C语言中的三种循环语句:while语句(当型)do-while语句(直到型)for语句(当型)循环体中的辅助控制语句:break语句continue语句goto语句,4.5.3while语句“当型”循环结构,while(表达式)语句,35,一般形式:说明:“表达式”为循环条件;“语句”为循环体。特点:先判断表达式,后执行语句。,4.5.4While语句,while语句中的“表达式”(即循环条件)可以是任意的表达式,但一般为关系表达式或逻辑表达式。循环体如果包含一个以上的语句,应该用花括弧括起来,以复合语句形式出现。在循环体中应有使循环趋向于结束的语句,以免形成死(无限)循环。允许循环体以空语句形式出现。,4.5.5,while语句应用举例,求2n。,例,#includevoidmain()inti=1,n;longintp=1;scanf(%d,i=1,p=1,输出p,输入n,当i=A,4.5.8for语句“当型”循环结构,for(表达式1;表达式2;表达式3)语句,一般形式:说明:表达式1:循环变量赋初始值表达式2:循环条件表达式3:循环变量增值语句:循环体,4.5.9for语句说明与案例,表达式1、表达式2、表达式3、语句都可以为空,但不能省略“;”。若省去表达式2,则为无限循环;若省去表达式1、表达式3,即仅有条件判断,则完全等同于while语句。表达式1、表达式3可以是逗号表达式。,#includevoidmain()ints=0,n;for(n=1;n=100;n+=2)s+=n*(n+1);printf(“s=%d”,s);,求100以内所有相邻奇偶数之积的和。,4.5.10三种循环的比较,三种循环都可以用来处理同一问题,一般情况下它们可以互相代替。用while和do-while循环时,循环变量初始化的操作应在while和do-while语句前完成;for语句可以在表达式1中完成。while和do-while循环只在while后面指定循环条件,且在循环体中应包含使循环趋于结束的语句;for循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中,功能更强。while和for循环先判断表达式,后执行语句;do-while循环先执行语句后判断表达式,4.5.11循环语句代码块,while结构和dowhile,for结构中的循环体是“块语句”,要么是单条语句,要么是用花括号包裹起来的多条语句,这if结构中的情况有些类似。从字面上看,dowhile结构中,do和while似乎已经把循环限定住了,再加花括号似乎显得多余,但C语言的规则规定此处必须是“块语句”,如果是多条语句,却没有用花括号包裹起来,编译器会提示出错。如果因为不小心,在while结构的“while(表达式)”后敲上了一个分号,将会造成死循环,也就是说,表达式的值得不到修改,程序一直重复、停留在该循环处不会跳出,此时:while(表达式);/*此处误敲了一个分号*/*循环体*/,4.5.12循环的嵌套,定义:一个循环体中又包含一个完整的循环结构,称为循环的嵌套。说明:while循环、do-while循环和for循环都可以进行嵌套,而且可以相互嵌套。,4.5.13几种合法的嵌套结构,45,while(),while(),do,do,while();,while();,for(;),for(;),while(),do,while();,for(;),while(),do,for(;),while();,4.5.14循环嵌套时注意,要保证嵌套的每一层循环在逻辑上都是完整的,避免嵌套交叉使用。要保证循环到最后有一个跳出循环的条件,否则会产生死(无限)循环(嵌套循环中检查死循环错误,相对来说比较困难)。在编程时,注意循环嵌套的书写最好用阶梯缩进的形式,可使程序层次分明。,4.5.15循环嵌套案例,输出九九表。,例,#includevoidmain()inti,j;printf(n);for(i=1;i=9;i+)printf(“%4d,i);printf(n-);for(i=1;i=9;i+)printf(n%4d,i);for(j=1;j200为止。#includevoidmain()intn,count=0;for(n=100;n=200;n+)if(n%3=0)continue;printf(%6d,n);count+;if(count%10=0)printf(n);,4.5.22goto语句无条件转移语句,goto语句标号;,一般形式:goto;说明:“语句标号”必须是合法的标识符。不能用整数作标号。用途:与if语句一起构成循环结构;从多层循环体的内层循环跳到外层循环。注意:结构化程序设计方法主张限制使用goto语句,滥用该语句将使程序流程无规律、可读性差。,53,4.5.23goto语句应用举例,用if和goto语句构成循环,求。,例,#includevoidmain()inti=1,sum=0;loop:if(i=100)sum=sum+i;i+;gotoloop;printf(Sum=%d,sum);,死循环,可以无限嵌套吗,C语言如此灵活,是不是每种都要掌握呢,死循环例如等待的时候,用得着,为了高薪,就必须面对世界五百强的面试,笔试,你应该每种都掌握,C语言理论上可以无限嵌套,4.6初学者答疑,4.6.1算法讲解-数据分离,数据的分离例:求水仙花数(一个三位数,其各位数字的立方和等于该数本身)分析:分离三位数的百位:a=s/100;分离三位数的十位:b=s/10%10;分离三位数的各位:c=s%10;if(s=a*a*a+b*b*b+c*c*c)输出s的值程序如下:,4.6.1算法讲解-数据分离,main()ints,a,b,c;for(s=100;s=999;s+)a=s/100;(百位)b=s/10%10;(十位)c=s%10;(个位)if(s=a*a*a+b*b

温馨提示

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

评论

0/150

提交评论