




已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2008-9-26,程序设计基础(C语言)wh,1,第三章,顺序和选择结构程序设计,2008-9-26,程序设计基础(C语言)wh,2,了解C语言程序的特点C程序的三种基本结构能编写简单的顺序结构程序。熟练掌握IF语句的三种形式,掌握IF语句的基本结构以及IF语句的嵌套,并能将条件运算符给出的语句转化成IF语句的形式。掌握SWITCH语句的一般形式,并能把复杂的分支选择性结构化成SWITCH语句来解决问题。,本章重点,2008-9-26,程序设计基础(C语言)wh,3,3.1程序设计概述,程序设计的最终目的是能在计算机上计算出正确的结果来。1969年,Dijkstra首先提出了结构程序设计的概念,强调从程序的结构和风格上来研究和设计程序。首先应从全局上把握系统所具备的功能是什么,并将系统划分成几个相对独立的子系统,而每个子系统只涉及局部的环境和条件。然后,进入第二步的实现阶段,即进行编码。在第一阶段,只要知道“做什么”,而在实现阶段,才考虑“如何做”。,2008-9-26,程序设计基础(C语言)wh,4,一个高质量的程序必须是运行可靠、清晰易读、高效率和可适应性及可移植性的。必须掌握如下几个避免错误的技术和方法:正确的程序设计方法正确性证明校对编译检查运行检查系统测试,2008-9-26,程序设计基础(C语言)wh,5,(1)voidmain()printf(hellon);(2)voidmain()printf(hellon);,程序书写格式(不好),2008-9-26,程序设计基础(C语言)wh,6,voidmain()printf(hellon);程序在适当的地方插入了换行符和空格符,形成逐层缩进的形式,程序清晰易读。,程序书写格式(好),2008-9-26,程序设计基础(C语言)wh,7,3.2scanf()函数和printf()函数,3.2.1数据输入的概念3.2.2scanf()函数的调用3.2.3printf()函数的调用3.2.4字符输入函数3.2.5字符输出函数,2008-9-26,程序设计基础(C语言)wh,8,3.2.1数据输入的概念,表达式中参加运算的变量必须首先得到一个值(用赋值语句对变量赋值)。考虑下面求圆面积的程序#include#definePI3.14159voidmain()floatr,area;r=4;area=PI*r*r;printf(Theareais%fn,area);运行结果:Theareais50.265440,2008-9-26,程序设计基础(C语言)wh,9,只计算半径为固定值4的圆的面积,不能输出其他不同半径的圆面积。人们希望编写一个通用程序,即不论数值大小如何变化,只要计算的方法相同,就能正确计算。解决的方法是在适当的地方安插一个数据输入语句。运行时,则临时从外部输入所需数据作为变量的初始数据。在C语言程序中,利用scanf()函数和getchar()函数,可以实现这个目的。,缺陷与解决方法,2008-9-26,程序设计基础(C语言)wh,10,3.2.3printf()函数的调用,scanf()函数是与printf()函数相对应的系统库函数。printf()函数是从显示器屏幕输出数据scanf()函数是从键盘得到输入数据scanf()函数的一般格式为:scanf(输入控制,输入数据表列);“输入控制”的含义与printf()函数的“输出控制”相同,输入数据表列是一个或多个用逗号分隔的变量的地址或字符串的首地址。变量的地址可以通过地址运算符“c=getchar();printf(%c,c);程序中使用getchar()从键盘的输入中得到一个字符常量并赋给字符变量c,然后输出该字符。,2008-9-26,程序设计基础(C语言)wh,13,3.2.5字符输出函数,putchar()是字符输出函数,与getchar()相对应。作用:向标准设备(通常是显示器)输出一个字符。putchar(c);结果:输出字符变量c的值。,2008-9-26,程序设计基础(C语言)wh,14,eg用putchar()函数显示从键盘输入的字符。,#includevoidmain()charc;c=getchar();putchar(c);可以将c=getchar();putchar(c);合并为:putchar(getchar();,2008-9-26,程序设计基础(C语言)wh,15,3.3程序的三种基本结构,2008-9-26,程序设计基础(C语言)wh,16,C语言的(简单)语句以分号为结束符。可分为:语表达式语句句流程控制语句(条件、循环等)复合语句,语句,2008-9-26,程序设计基础(C语言)wh,17,1.表达式语句,任何一个表达式加上一个分号就可以组成一条语句。表达式;/表达式语句,2008-9-26,程序设计基础(C语言)wh,18,其中最常用的有赋值语句(赋值表达式)和函数调用语句(函数调用表达式)。例如:a=a+c*(d+3)a=a+c*(d+3);a+b+ca+b+c;i+i+;printf(”hello!”);scanf(”%d”,2008-9-26,程序设计基础(C语言)wh,19,2.复合语句,将多个相关联的简单语句用一对大括号括起来就构成了复合语句,在程序中当作一个语句看待。其一般格式为:a=1.0;/定义变量的说明语句;b=2.0;/定义变量的说明语句;i+;/可执行语句;,2008-9-26,程序设计基础(C语言)wh,20,3.流程控制语句,结构化程序设计的基本思想是任何程序都可以用三种基本结构来实现,即顺序结构、选择结构和循环结构。顺序结构的程序流程是按语句书写的顺序依次执行。选择结构是根据给定条件进行判断,由判断的结果决定执行两条或多条路径中的一条。循环结构是在给定条件成立的情况下反复执行某个程序段,该程序段称为”循环体”。实现上述各种程序流程的语句称为流程控制语句.,2008-9-26,程序设计基础(C语言)wh,21,C语言有9种控制语句,if()else(条件语句)for()(循环语句)while()(循环语句)dowhile()(循环语句)continue(结束本次循环语句)break(中止执行switch或循环语句)switch(多分支选择语句)goto(转向语句)return(从函数返回语句),2008-9-26,程序设计基础(C语言)wh,22,算法的描述流程图,以图解方式说明实现一个解决方案所需完成的一系列操作.为了达到下列目的:一目了然,比文字描述易懂.程序可以很容易地查看和修改.提供有效的程序文档.解释程序和讨论解决方案变得容易.,2008-9-26,程序设计基础(C语言)wh,23,传统流程图里常用的符号,开始或结束框“处理框”-运算步骤输入或输出框判断框连接符:一个程序中两个部分之间的连接程序的流程线注释,2008-9-26,程序设计基础(C语言)wh,24,传统流程图里的符号连接符,在为复杂问题准备流程图时流程图可能无法放在一页中要将所有的图块直接连接起来比较困难流程图可以被分割成若干部分.连接符可以用于指定连接的位置.在连接符中指定了一个唯一的数.在图表断开的地方,一个箭头指示了那一点.,2008-9-26,程序设计基础(C语言)wh,25,传统流程图里的符号连接符,2008-9-26,程序设计基础(C语言)wh,26,流程图的一些提示,画流程图时应该记住的一些要点:开始把注意力集中在问题的逻辑上,画出流程图的主路径.完成主路径后,加上分支和循环.一个流程图只能含有一个起始点和一个结束点没有必要在流程图中画出程序的每个步骤.使用描述性的术语来表现问题的逻辑结构.不要用模棱两可的词语.让其他编程人员或用户能够轻松看懂你的流程图,2008-9-26,程序设计基础(C语言)wh,27,顺序结构,1、基本结构2、执行过程:先执行A操作,再执行B操作,2008-9-26,程序设计基础(C语言)wh,28,最简单的程序设计顺序结构程序顺序结构程序中一般不包含控制语句(条件语句、循环语句、转向语句等),从程序的执行次序来看,语句按一定顺序依次执行,执行顺序即语句书写顺序。,2008-9-26,程序设计基础(C语言)wh,29,#includevoidmain(void)intx,y,z;printf(“pleaseinputxandy:n”);scanf(“%d,%d”,例输入两个变量,并交换两者的值,运算结果pleaseinputxandy:22,52x=52,y=22,2008-9-26,程序设计基础(C语言)wh,30,3.4if语句,3.4.1if语句的三种形式3.4.2if语句的嵌套,2008-9-26,程序设计基础(C语言)wh,31,3.4.1if语句的三种形式if结构单分支形式,if结构的一般格式为:if(表达式)语句功能:首先计算表达式的值,若其值为非0(即“真”),则执行表达式后的语句;若其值为0(即“假”),则跳过这个语句去执行if语句的后继语句。其中,if(表达式)后面的语句只能是一个语句或一个复合语句。,2008-9-26,程序设计基础(C语言)wh,32,流程,表达式,语句,true(非0),表达式,false(0),2008-9-26,程序设计基础(C语言)wh,33,单分支型if语句范例,例求x的绝对值,#includevoidmain(void)intx;scanf(“%d”,-12|-12|=12,2008-9-26,程序设计基础(C语言)wh,34,#includevoidmain()floatr;printf(Inputtheradius:);scanf(%f,程序先从键盘读入r的值,然后判断r值是否大于0,若大于0则进行计算并输出,否则就不进行计算。,eg从键盘输入圆的半径,若半径小于等于0,则不进行计算;否则,计算圆面积。,2008-9-26,程序设计基础(C语言)wh,35,#includevoidmain()charc;c=getchar();if(c+!=#)putchar(c);purchar(c)输出的字符是a+1,即b。,例从键盘输入字符a,试判断下面程序运行的结果。,2008-9-26,程序设计基础(C语言)wh,36,if-else结构,if-else结构的一般格式为:if(表达式)语句1else语句2功能:首先计算表达式的值,若其值为非0,则执行语句1,然后跳过语句2,往下执行if的后继语句;若其值为0,则跳过语句1,执行语句2,然后往下执行if的后继语句。其中,语句1和语句2分别都是一个语句或一个复合语句。,2008-9-26,程序设计基础(C语言)wh,37,流程,true(非0),表达式,语句1,false(0),表达式,语句2,2008-9-26,程序设计基础(C语言)wh,38,例求a、b中的最大值。,#includevoidmain()inta,b,max;scanf(%d%d,2008-9-26,程序设计基础(C语言)wh,39,程序中引进了一个变量max,用它保存a、b中的最大者。若ab,则将a送max中保存,否则将b送max中保存。最后,输出max的内容。,说明,2008-9-26,程序设计基础(C语言)wh,40,if语句使用要点,if语句的使用要点1、语句块:语句1和语句2可以是简单语句,但经常是用一对大括号包围的复合语句。即用括起来的语句。如:if(ab)当只有一条语句时,用;。x=1;max=a;,2008-9-26,程序设计基础(C语言)wh,41,2、表达式:if语句的表达式一般情况下为逻辑表达式或关系表达式。如:if(a=b注意:“非零”与“零”的用法请区分if(x=1)与if(x=1)的不同。,2008-9-26,程序设计基础(C语言)wh,42,由于圆括号中的表达式仅仅用来测试表达式的值是零值还是非零值,因此可作如下简化:if(表达式!=0)if(表达式)如:if(a!=0)if(a)if(a=0)if(!a)if(a!=6)if(a6)if(a=6)if(!(a6),2008-9-26,程序设计基础(C语言)wh,43,if-else-if结构多路分支选择,if-else-if结构的一般格式为:if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3else语句n,ifelseif形式条件语句的流程图,2008-9-26,程序设计基础(C语言)wh,44,例输入一个x值,求下列相应的y值:,#includevoidmain()floatx,y;scanf(%f,运行结果:-88y=-1.000000,2008-9-26,程序设计基础(C语言)wh,45,例从键盘输入学生的成绩,由计算机对学生的成绩进行分级:如果输入成绩大于100或小于0,则作错误处理;若输入成绩大于等于90,则为“A级”;若输入成绩小于90而大于等于80,则为“B级”;若输入成绩小于80而大于等于70,则为“C级”;若输入成绩小于70而大于等于60,则为“D级”;否则为“E级”。,#includevoidmain()intscore;printf(Enterascore:);scanf(%d,运行结果为:Enterascore:85B,2008-9-26,程序设计基础(C语言)wh,47,if-else-if多分支语句-思考题1,判断输入的某个年份是否是闰年。请填空。main()inty;scanf(“%d”,y%400=0,y%4=0elseprintf(positiveandoddn);,2008-9-26,程序设计基础(C语言)wh,50,else与前面最近(未曾配对)的if配对。如果要改变上页中所确定的配对关系,即else要与外层的if配对,则第二个if语句必须用花括号括起来。例如,下面的输出是正确的:if(i0)if(i%2=0)printf(positiveandevenn);elseprintf(notpositiven);,C语言规定的配对关系,花括号将内嵌的if语句孤立来,形成一个独立的复合语句,使内嵌的if不与后面的else配对,从而else必定与外一层的if配对。,2008-9-26,程序设计基础(C语言)wh,51,例从键盘输入三个实数,求其最大者。,#includevoidmain()floata,b,c,max;scanf(%f%f%f,说明:(1)程序引进了一个中间变量max,用以存放最大数。(2)嵌套在内层的if语句可以不用花括号括起来。但为了使结构更清晰,添加花括号也决不是多余的。,2008-9-26,程序设计基础(C语言)wh,53,嵌套if语句-思考题,根据输入的三角形的三条边,判断是否能组成三角形,若可以则输出它的面积和三角形的类型。,3.5switch语句选择结构2,C语言中提供的switch语句可用于解决多分支的问题。,switch语句的一般格式switch(表达式)case常量表达式1:语句块1break;case常量表达式2:语句块2break;case常量表达式n:语句块nbreak;default:语句块n+1break;,2008-9-26,程序设计基础(C语言)wh,55,流程,2008-9-26,程序设计基础(C语言)wh,56,(1)首先计算表达式的值,然后将此值与case后面的常量表达式的值相比较,如果某个常量表达式的值与它相等,则执行该case后的语句块;如果表达式的值与所有常量表达式的值都不相等,则执行default后的语句块。(2)如果执行完某一个case的语句块后没有遇到break语句,则进入到下一个case的语句块或进入到default后的语句块去执行。(3)多个case可以共用一个语句块。,功能说明,2008-9-26,程序设计基础(C语言)wh,57,switch语句,例:写出下面程序的输出结果.#includevoidmain(void)intx;scanf(“%d”,若从键盘输入3,输出为:PassFailPoor,2008-9-26,程序设计基础(C语言)wh,58,1.从ISO/ANSIC标准开始,允许switch后面圆括号内的表达式是任意表达式,只要它能转换成确定的整数值。通常是一个整型或字符型表达式,有时是一个带返回值的函数或者是结构体成员,甚至是某类对象的数据成员。2.每个常量表达式的值必须各不相同,否则将会出现矛盾.,switch语句-使用要点,2008-9-26,程序设计基础(C语言)wh,59,switch语句-使用要点,3.当表达式的值与case后面的常量表达式值相等时就执行此case后面的语句。4.“case常量:”只起语句标号的作用。5.break语句在switch中的作用:强行跳出switch体转到其它某条语句,每个case后面应有一个break语句(否则程序的执行顺序将改变),default分支后的break可以省略。6.各个case出现的先后顺序不影响程序的执行结果。,2008-9-26,程序设计基础(C语言)wh,60,7.多个case可以执行同一组语句。8.表示所有情况都不符合时,则执行default分支下的语句组n+1,它只能出现一次,通常放在分支结构的最后。但这不是它的唯一位置。default可以出现在case之间,甚至出现在所有的case之前,但等效于出现在switch的最后部分。编程者也可以视具体使用情况而不用default分支,对于没有default分支的switch语句,在所有情况都不符合时将不执行任何操作。,switch语句-使用要点,2008-9-26,程序设计基础(C语言)wh,61,switch语句-范例,Switch语句例:若变量已正确定义,则以下程序段的运行结果是:a=2;b=7;c=5;switch(a0)case1:switch(b10)case1:printf();break;case0:printf(!);break;case0:switch(c=5)case0:printf(*);break;case1:printf(#);break;default:printf(%);break;default:printf(,2008-9-26,程序设计基础(C语言)wh,62,例把学生的成绩按优、良、中、差分类。,switch(score/10)case0:case1:case2:case3:case4:case5:printf(fail.n);break;case6:case7:printf(pass.n);break;case8:printf(good.n);break;case9:printf(excellent.n);break;default:printf(excellent.n);,#includevoidmain()intscore;printf(Inputascoreofthestudent:);scanf(%d,else,2008-9-26,程序设计基础(C语言)wh,64,switch语句-思考题,用switch语句改写if语句例3-15对学生成绩分A、B、C、D、E级:90分以上为A;8089为B;7079为C,6069为D,60分以下为E。输入一个分数,判断是何等级并显示。,2008-9-26,程序设计基础(C语言)wh,65,程序设计举例,例某产品的国内销售价,80箱以下,每箱350元,超过80箱,超过部分每箱优惠20元;国外销售价,1000箱以下,每箱900元,超过1000箱,超过部分每箱优惠15元。试编写计算销售额的程序。题中产品分国内、国外两种销售价格,适宜使用if-else结构语句处理。在每一种销售价格中,又根据销售量的不同而计算的方法也不同。因此,可用嵌套if语句实现。使用整型标志变量national表示国内、国外两种销售。,if(national)/*国内销售*/if(count=80)money=count*350.0;elsemoney=count*350.0-(count-80.0)*20.0;else/*国外销售*/if(co
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 可靠的家装工装施工方案
- 河北装配式医院施工方案
- 黑龙江古建彩绘施工方案
- 迈凯伦售后营销方案
- 少年宫建筑方案设计重点
- 营销引资策划方案
- 国际篮球场施工方案设计
- 高校大学生心理健康课程总结
- 修订版义务教育课程实施方案
- 企业年终总结与未来规划方案
- GB/T 9446-1988焊接用插销冷裂纹试验方法
- GB/T 475-2008商品煤样人工采取方法
- GB/T 4392-2019敲击呆扳手和敲击梅花扳手
- GB/T 27546-2011起重机械滑轮
- 化工工艺学章硝酸参考
- FZ/T 73019.2-2020针织塑身内衣调整型
- 2022年金华市婺城区城乡建设投资集团有限公司招聘笔试试题及答案解析
- 港珠澳大桥概述讲解课件
- 消防工程施工技术交底(全套)
- 发展对象公示情况登记表
- DB32-T 2667-2014地理标志产品 邳州苔干-(高清现行)
评论
0/150
提交评论