C程序设计.周强.国防科技大学.第3章.ppt

上传人:牧羊曲112 文档编号:6503595 上传时间:2023-11-07 格式:PPT 页数:38 大小:229.49KB
返回 下载 相关 举报
C程序设计.周强.国防科技大学.第3章.ppt_第1页
第1页 / 共38页
C程序设计.周强.国防科技大学.第3章.ppt_第2页
第2页 / 共38页
C程序设计.周强.国防科技大学.第3章.ppt_第3页
第3页 / 共38页
C程序设计.周强.国防科技大学.第3章.ppt_第4页
第4页 / 共38页
C程序设计.周强.国防科技大学.第3章.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《C程序设计.周强.国防科技大学.第3章.ppt》由会员分享,可在线阅读,更多相关《C程序设计.周强.国防科技大学.第3章.ppt(38页珍藏版)》请在三一办公上搜索。

1、第3章 结构化程序设计,3.1 算 法,3.1.1 算法概述,1.算法的概念,所谓算法,就是计算机解决某一个问题的具体方法和步骤,即算法是解决“做什么”和“怎么做”的问题。程序中的操作语句,实际上就是算法的体现。算法是程序设计的灵魂,数据结构是加工和处理的对象。计算机用于解决数值计算,如科学计算中的数值积分、解线性方程等的计算方法,就是数值计算的算法;用于解决非数值计算,如用于管理、文字处理、图像图形等的排序、分类、查找,就是非数值计算的算法。,2.算法的特性,简单地说,算法就是进行操作的方法和操作步骤。通常,一个算法应该具有以下5个重要的特征:1)有穷性 2)确定性 3)有零个或多个输入 4

2、)有一个或多个输出 5)有效性,3.1.2 算法的描述,描述算法有多种不同的工具,采用不同的算法描述工具对算法的质量有很大的影响。描述一个算法可以采用自然语言、计算机程序设计语言、流程图、NS图、伪代码语言等。其中,自然语言就是人们日常使用的语言,可以是汉语、英语或其他语言。,1.流程图,流程图是一种流传很广的算法描述工具,它是一种用规定的图形、指向线及文字说明来准确表示算法的图形,具有直观、形象的特点,能清楚地展现算法的逻辑结构,而且它独立于任何一种程序设计语言。常用的流程图符号如图所示。,2N-S图,灵活的流程线是程序中隐藏错误的祸根。针对这一弊病,1973年,美国学者I.Nassi和B.

3、Shneiderman提出了一种新的流程图形式,称为N-S图。这种流程图,完全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包含其他的从属于它的框,或者说,由一些基本的框组成一个大的框。这种流程图适合于结构化程序设计,因而很受欢迎。,3.1.3 算法实现的过程,要完成一件工作,包括设计算法和实现算法两个部分。用计算机来解决问题,即用计算机实现算法。计算机是无法识别流程图的。只有用计算机语言编写的程序才能被计算机执行(当然,还要经过编译生成目标程序才能被计算机识别和执行)。因此,在用流程图描述一个算法后,还要将它转变成计算机语言程序。,3.1.4 C语言程序设计的基本步骤,一个好

4、的程序应该满足设计要求,除了能够正常运行和实现预定的功能以外,还应满足以下方面:(1)程序要结构化、简明、易读和易调试。(2)执行速度快。(3)占用存储空间少。2.C语言程序设计的基本步骤(1)分析问题,抽象出描述问题的数学模型。(2)确定解决问题的算法。(3)绘制出程序流程图或N-S图。(4)编写程序。(5)检查和调试程序。,1一般程序设计的要求,3.2 顺序结构程序设计,C语言是一种结构化程序设计语言,结构化程序由三种基本结构组成,即顺序结构、选择结构和循环结构。顺序结构是这三种基本结构中最简单的一种。在顺序结构程序中,各语句是按照物理位置的先后次序顺序执行的,且每个语句都会被执行到。下面

5、通过几个例子来了解顺序结构程序设计。【例31】从键盘输入一个大写字母,要求转换为小写字母输出。该程序要解决的问题是将输入的大写字母转换为小写字母并输出。输入的是大写字母,最终输出的是小写字母,如何将大写字母转换为小写字母是数据的处理过程。小写字母的十进制ASCII码值比大写字母的ASCII码值大32,所以只要将大写字母的ASCII码值加上32,即可得到小写字母的ASCII码值,该问题通过字符的运算就可以解决了。,参考程序如下:/*Chap3_1.c:将大写字母转换为小写字母*/#includeint main()char ch1,ch2;ch1=getchar();printf(%c,%dn,

6、ch1,ch1);ch2=ch1+32;printf(%c,%dn,ch2,ch2);return 0;,程序运行结果如下:AA,65a,97,3.3 选择结构程序设计 3.3.1 条件的描述和条件表达式,1关系运算符和关系表达式1)关系运算符比较两个操作数大小的运算符称为关系运算符。如ab是比较运算,“”是关系运算符。,2)关系表达式,用关系运算符将两个表达式(可以是算术表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的式子称为关系表达式。关系表达式的值是一个逻辑值(真或假),用“1”或“0”表示。关系表达式的一般形式为:表达式 关系运算符 表达式,2逻辑运算符和逻辑表达式,

7、1)逻辑运算符C语言中提供了三种逻辑运算符,分别是逻辑非(!)、逻辑与(&)和逻辑或(|)。2)逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来构成的式子称为逻辑表达式。逻辑表达式的一般形式为:表达式 逻辑运算符 表达式 在一个逻辑表达式中可以包含多个逻辑运算符,如:!a&b|cd&y 逻辑运算符中的“&”和“|”的优先级低于关系运算符,而“!”高于算术运算符。,3.3.2 if 语句,1.if语句if 语句的格式为:if(表达式)语句1 例如:if(ab)printf(%dn,a);如果表达式的值为真,则执行“语句1”,否则不执行“语句1”。这种结构被称为单分支的选择结构。需要注意的是,语

8、句1可以是一条语句,还可以是多条语句。如果为多条语句,则要使用花括号括起来。,2.if else 语句if else 语句的格式为:if(表达式)语句1else 语句2若表达式的值为真(非零),就执行“语句1”;若表达式的值为假(0),则执行“语句2”,然后执行if语句后的下一条语句。这就是典型的两分支选择结构。,3if elseif 语句,当有多个分支选择时,可采用ifelseif 语句,其一般形式如下:if(表达式1)语句1 else if(表达式2)语句2 else if(表达式3)语句3 else if(表达式m)语句m else 语句n,关于多分支选择结构,说明以下两点:(1)先判断

9、表达式1的值,当表达式1的值为真时,则执行语句1,执行完之后,跳出if语句;当表达式1的值为假时,再判断表达式2的值,当表达式2的值为真时,则执行语句2,执行完之后,跳出if语句;当表达式2的值为假时,再判断表达式3的值当所有表达式的值都为假时,执行语句n,执行完之后,跳出if语句。(2)最后一个else可以不存在。例如:if(x0)y=1;else if(x=0)y=0;else if(x0)y=-1;,3.3.3 if语句的嵌套,在if语句中又包含一个或多个if语句,称为if语句的嵌套。其一般格式为:if(表达式)if(表达式)语句else语句elseif(表达式)语句else语句 应当注

10、意if与else的配对关系。else总是与上面距它最近的if配对。假如写成下面这样也可以。if(表达式)if(表达式)语句elseif(表达式)语句2else语句3 编写者把else写在与第1个if(外层if)同一列,希望else与第1个if对应,但是实际上else还是与第2个if配对,因为它们相距最近。因此,最好使内嵌if 语句也包含else部分,这样if的数目与else的数目相同,从内层到外层一一对应,不致出错。,3.3.4 条件运算符,在if语句中,当表达式的值无论真或假时都只执行一个赋值语句给同一个变量赋值时,可以用简单的条件运算符来处理。例如,以下的if语句:if(ab)max=a;

11、else max=b;可以用下面的条件运算符来处理:max=(ab)?a:b;其中,(ab)?a:b是一个条件表达式。它是这样执行的:如果ab条件成立,则条件表达式取a值,否则取b值。条件运算符要求有3个操作对象,称为三目运算符,它是C语言中唯一的一个三目运算符。条件表达式的一般形式为:表达式1?表达式2:表达式3,3.3.5 switch语句,多分支选择结构可以使用嵌套的if语句来处理,但如果分支较多,嵌套的if语句层数多,程序冗长而且可读性降低。C语言还提供了另一种用于多分支选择的语句switch语句,其一般形式为:,switch(表达式)case 常量表达式1:语句1;break;cas

12、e 常量表达式2:语句2;break;case 常量表达式m:语句m;break;default:语句n;,switch语句的执行过程为:当表达式与常量表达式1相等时,执行语句1,用break语句终止switch语句,不再进行其他条件判断;执行右花括号后的下一条语句。当表达式与常量表达式1不相等时,判断表达式与常量表达式2是否相等,若相等,则执行语句2,用break语句终止switch语句,不再进行其他条件判断,执行右花括号后的下一条语句;若不相等,再判断表达式与常量表达式3是否相等,依此类推。当所有条件都不满足时,则执行语句n,default表示其他条件。,3.4 循环结构设计程序,循环结构

13、是程序控制结构中的第3种结构,也是应用比较广泛的一种结构。循环结构又称为重复结构,可以完成重复性、规律性的操作。在人们所需处理的运算任务中,常常需要用到循环,如求若干个数的和、迭代求根等。循环结构是程序控制结构中的第3种结构,也是应用比较广泛的一种结构。循环结构又称为重复结构,可以完成重复性、规律性的操作。在人们所需处理的运算任务中,常常需要用到循环,如求若干个数的和、迭代求根等。,3.4.1 迭代与穷举算法,1迭代法迭代是一个不断用新值取代变量的旧值,或由旧值递推得出变量新值的过程。2穷举法 穷举是另一种重复性算法。它的基本思想是,对问题的所有可能状态逐一测试,直到找到解或全部可能状态都测试

14、完为止。循环控制有两种方法:计数法与标志法。计数法要先确定循环的次数,然后逐次进行测试,达到测试次数后,循环结束。标志法是判断是否达到某一目标,一旦达到,便使循环结束。,3.4.2 while语句,while语句用于实现“当型”循环结构。其一般形式为:while(表达式)语句 其中,表达式是循环的条件,语句为循环体,它可以由一个或多个语句构成。它的执行过程是:(1)先判断表达式的值为真(非0)或为假(0);(2)如果表达式的值为真(非0),执行循环体语句,再重复步骤(1);如果表达式的值为假(0),循环结束,执行while语句后面的语句。while语句的执行特点是:先判断表达式的值,后执行循环

15、体语句。,3.4.3 dowhile语句,while语句是在结构头部检验循环条件,当循环条件为真时进入循环体;若为假则直接退出循环。dowhile语句与while语句不同,dowhile语句是在循环的尾部检验循环条件,也就是说,dowhile语句至少执行一次循环体。dowhile语句的一般形式为:do循环体语句while(表达式);其中,表达式是循环条件。它的执行过程是:(1)先执行循环体语句一次,再判别表达式的值。(2)如果表达式的值为假(0),循环结束;如果表达式的值为真(非0),重复执行(1),继续进行循环。dowhile语句的特点是:先执行循环体语句,后判断表达式。,3.4.4 for

16、语句,for语句是C语言所提供的功能更强,使用更广泛的一种循环语句,它不仅可以用于循环次数确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况。,for语句的一般形式为:for(表达式1;表达式2;表达式3)循环体语句for语句中的3个成分都是表达式,其含义可以理解为:(1)表达式1通常用来给循环变量赋初值,一般是赋值表达式。当然,也允许在for语句之前给循环变量赋初值,此时可以省略该表达式。(2)表达式2通常是循环条件,以便决定是否继续执行循环,一般为关系表达式或逻辑表达式,也可以是其他任意类型的数值表达式,只要它的值为真,就可以执行循环体。(3)表达式3通常可用来修改循环变量的

17、值,一般是赋值语句。,for语句的执行过程为:(1)求表达式1的值。(2)求表达式2的值,如果它的值为真(非0),则执行循环体语句,然后执行第(3)步;如果它的值为假(0),则结束循环,执行for语句之后的语句。(3)求表达式3的值,然后返回第(2)步重复执行。在整个for循环过程中,表达式1只计算一次,表达式2和表达式3则可能计算多次。循环体可能多次执行,也可能一次都不执行。,for语句最简单、最易理解的应用形式如下:for(循环变量初值;循环条件;循环变量增值)循环体语句例如:for(i=1;i=10;i+)sum=sum+i;,3.4.5 循环中断控制语句,有两种循环中断控制语句:bre

18、ak语句和continue语句。1.break语句break语句有以下两个作用:(1)可以使程序流程跳出switch结构,继续执行switch语句下面的一个语句。(2)强迫循环立即终止,使程序流程跳出循环结构,执行循环下面的语句。break语句的一般形式为:break;使用break语句可以使循环语句有多个出口,使程序避免一些不必要的重复,提高程序效率。,2.continue语句,continue语句的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次循环条件的判断。continue语句的一般形式为:continue;continue语句与break语句的区别是:contin

19、ue语句只结束本次循环,而不是终止整个循环的执行;而break语句则是结束整个循环过程,不再判断执行循环的条件。,3.4.6 循环的嵌套,一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层嵌套循环。3种循环语句都可以互相嵌套。,本 章 小 结,本章介绍了算法的概念以及结构化程序设计的3种基本结构顺序结构、选择结构和循环结构。在选择结构中,介绍了选择结构的3种基本类型:单分支选择结构、两分支选择结构和多分支选择结构。需要注意的是,不管程序中有多少个分支,只能选择一个分支执行。在循环结构程序设计一节中,介绍了循环结构的概念以及循环结构在C语言中的实现方法,主要有for语句、while语句和dowhile语句。这3个语句可以处理相同的问题,一般情况下它们可以相互替代,但是要注意使用上的区别。其中,for语句使用灵活而且应用广泛,它不仅可以实现计数循环,也可以实现非计数循环,几乎可以解决所有的循环问题。而while语句和dowhile语句比较适合解决非计数循环问题。遇到复杂的问题时需要使用循环的嵌套来解决,在使用循环的嵌套时,需要注意分清楚内层循环和外层循环的不同执行特点。在循环的过程中需要终止循环时,可以使用break语句或continue语句,同时需要注意它们之间的区别。,本 章 结 束,谢 谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号