第1章_程序的概念与算法_第1页
第1章_程序的概念与算法_第2页
第1章_程序的概念与算法_第3页
第1章_程序的概念与算法_第4页
第1章_程序的概念与算法_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

1、1。23 你对你对C C语言了解程度如何语言了解程度如何? ? (1).(1).对对C C语言语言一无所知一无所知 (2). (2).听到或看过一些关于听到或看过一些关于C C语言的知识语言的知识 调查调查4努力认真学好努力认真学好 C C 语言语言 1. 从技术层面来讲从技术层面来讲,C语言是我们语言是我们最值得最值得努力学习努力学习的一门语言的一门语言: 教育部规定教育部规定,每个大学生都要掌握至少一门编程语每个大学生都要掌握至少一门编程语言言,这样做一定有它的道理这样做一定有它的道理:5 (1). C语言是目前国际上共认的主打语言语言是目前国际上共认的主打语言,是必须是必须 要认真学好的

2、,特别对工科类同学要认真学好的,特别对工科类同学. (2). 有了有了C语言的知识语言的知识,可为今后学习后续可为今后学习后续C语言语言, 及学习其它语言及学习其它语言打下良好的基础打下良好的基础.62. 计算机技术是人类智慧的结晶,通过学习一门计算机技术是人类智慧的结晶,通过学习一门计算机语言,加深对这一成果的体会,改进我计算机语言,加深对这一成果的体会,改进我们的思维方式,从另一个侧面提高我们的素质们的思维方式,从另一个侧面提高我们的素质水平。水平。 同时,通过学习计算机语言,对我们今后学同时,通过学习计算机语言,对我们今后学习,使用计算机的其它操作,也会带来很大的习,使用计算机的其它操作

3、,也会带来很大的帮助。帮助。3. “打好一个基础打好一个基础,掌握二种工具掌握二种工具”: 数学基础,计算机和外语二种工具。数学基础,计算机和外语二种工具。 迎接迎接“省省计算机二级等级考试计算机二级等级考试”。74. 当然当然,C语言是我们接触的语言是我们接触的第一门高级语言第一门高级语言,刚刚 开始学习计算机语言会有一定难度开始学习计算机语言会有一定难度(新的概念新的概念,新新 的理论的理论 和方法和方法,相当多的语法点要理解和记忆等相当多的语法点要理解和记忆等). 并且并且,C语言是计算机高级语言中较为难学的一语言是计算机高级语言中较为难学的一门语言门语言,更需要我们投入更多精力去学习更

4、需要我们投入更多精力去学习,掌握掌握. 我们应该为自己即将学习和掌握一门编程语言我们应该为自己即将学习和掌握一门编程语言而高兴和自豪而高兴和自豪.89 “ 程序设计程序设计”(第三版)(第三版) 潭浩强著潭浩强著 清华大学出版社清华大学出版社10Dennis RitchieC:B.W.Kernighan和和D.Ritchie(简称(简称K & R) 合著的合著的The C Programming Language是是 各种各种C语言版本的基础,称之为语言版本的基础,称之为旧标准旧标准C语言语言。:美国国家标准化协会(:美国国家标准化协会(ANSI)制定了)制定了新的新的C 语言标准,称

5、语言标准,称ANSI C。111 1C C语言是一种结构化语言语言是一种结构化语言. .2 2C C语言语句简洁、紧凑,使用方便、灵活语言语句简洁、紧凑,使用方便、灵活. .3 3C C语言程序易于移植语言程序易于移植. . C C语言将与硬件有关的因素从语言主体中分离出来,通过库函语言将与硬件有关的因素从语言主体中分离出来,通过库函数或其他实用程序实现它们。数或其他实用程序实现它们。 126数据类型检查不严格,表达式出现二义性,不具备数数据类型检查不严格,表达式出现二义性,不具备数 据越界自动检查功能,运算符的优先级与结合性对初学据越界自动检查功能,运算符的优先级与结合性对初学 者难于掌握者

6、难于掌握.13 第第 1 1 章章 程程 序序 的的 概概 念念 与与 算算 法法141.1 程序的概念程序的概念 程序是指把希望计算机做的工作写成一定形式的指令,程序是指把希望计算机做的工作写成一定形式的指令,并把它们存储在计算机的内部存储器中。并把它们存储在计算机的内部存储器中。 当人们给出命令之后,它就按指令操作顺序自动进行,当人们给出命令之后,它就按指令操作顺序自动进行,把这种可以连续执行的一条条指令的集合称为把这种可以连续执行的一条条指令的集合称为“程序程序”。 目前,正在使用的计算机程序设计语言有很多种,有目前,正在使用的计算机程序设计语言有很多种,有些语言是些语言是面向机器面向机

7、器的,如二进制语言,而多数是的,如二进制语言,而多数是面向问题面向问题的语言。的语言。15 目前的程序设计一般可分为非结构化程序设计、目前的程序设计一般可分为非结构化程序设计、结构化结构化程序设计程序设计和和面向对象面向对象的程序设计的程序设计. C语言是结构化程序设计语言,而语言是结构化程序设计语言,而C+称为面向对象的称为面向对象的语言。语言。 面向问题的语言都被称为计算机的面向问题的语言都被称为计算机的“高级语言高级语言”,如,如C与与C+语言等。语言等。16 程序是为了解决某个问题而设计,用程序是为了解决某个问题而设计,用C语句所写的序列语句所写的序列称为称为C源程序源程序,它的后缀为

8、,它的后缀为(.c) . C源程序经过编译源程序经过编译(Compile)后生成一个后生成一个目标文件目标文件(.obj). 经过链接库函数后生成经过链接库函数后生成可执行文件可执行文件(.exe)。 这些语言都是用接近人们习惯的自然语言和数学语言作这些语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式,人们学习和操作起来感到十分方便。为语言的表达形式,人们学习和操作起来感到十分方便。 17 C程序的设计过程如下图所示程序的设计过程如下图所示: 问题的提问题的提出及分析出及分析 确定该问确定该问题的算法题的算法用用C语言描述算法语言描述算法建立语言源程序建立语言源程序 编译生成编译生

9、成.obj文件文件 连接有关库函数后连接有关库函数后生成可执行文件生成可执行文件运行程序并输运行程序并输出正确的结果出正确的结果181.2 算法与流程图算法与流程图 什么是算法?什么是算法? 算法是指解决问题所使用的一系列合乎逻辑的解题步骤算法是指解决问题所使用的一系列合乎逻辑的解题步骤. 一个程序应包括两方面内容一个程序应包括两方面内容:(1). 对对数据的描述数据的描述. 要指定数据的类型和数据的组织形式要指定数据的类型和数据的组织形式, 即数据结构即数据结构. 19(2). 对对操作的描述操作的描述, 操作步骤操作步骤,即算法即算法(algorithm). 著名计算机科学家著名计算机科学

10、家Wirth(Wirth(沃思沃思) )提出提出: : 数据结构数据结构+ +算法程序算法程序 在计算机科学中,算法要用计算机算法语言描述在计算机科学中,算法要用计算机算法语言描述. 要解决一个复杂的问题,需要仔细的分析与研究此问题,要解决一个复杂的问题,需要仔细的分析与研究此问题,并进行精确的逻辑分析,找到解决问题的方法,再用计算并进行精确的逻辑分析,找到解决问题的方法,再用计算机实现。机实现。20 当然当然,求解一个给定的可解的问题,不同的人可以编写出求解一个给定的可解的问题,不同的人可以编写出不同的程序。不同的程序。 例如判断一个整数的奇偶性,大致分成以下几步:例如判断一个整数的奇偶性,

11、大致分成以下几步:计算机读入该数计算机读入该数;将该数除以将该数除以2;判断余数是否为判断余数是否为0;如果为如果为0,该数为偶数,该数为偶数;否则为奇数否则为奇数. 以上这些解决问题的一系列步骤就是算法,并且可以上这些解决问题的一系列步骤就是算法,并且可以用以用C语言编写成程序,用以解决数的奇偶性问题。语言编写成程序,用以解决数的奇偶性问题。21什么是流程图?什么是流程图? 流程图是一种用图解方式说明流程图是一种用图解方式说明,解决一个问题所要的一解决一个问题所要的一系列操作。系列操作。 流程图比文字更容易理解,更加直观流程图比文字更容易理解,更加直观. 流程图中的符号含义如下所示流程图中的

12、符号含义如下所示: 22输入输出输入输出连接符连接符控制流控制流条件判断条件判断加工、处理加工、处理程序的入口和出口程序的入口和出口含义含义常用基本组件常用基本组件流程图的符号及含义流程图的符号及含义23例例1.1 从键盘输入两个数,求这两数从键盘输入两个数,求这两数之和,并把结果输出之和,并把结果输出. 画出此问题的流程图。画出此问题的流程图。 开始开始 输入两数输入两数 两数相加两数相加 显示结果显示结果 结束结束 定义两个变量定义两个变量程序流程图程序流程图241.3 结构化程序设计包含的三种结构结构化程序设计包含的三种结构 结构化程序设计由三种结构组成:结构化程序设计由三种结构组成:

13、顺序结构、选择结构、循环结构。顺序结构、选择结构、循环结构。 1.3.1 顺序结构顺序结构 顺序结构的程序是一条语句接一顺序结构的程序是一条语句接一条语句顺序地往下执行的。条语句顺序地往下执行的。 例如右图中,先执行语句例如右图中,先执行语句1,然后,然后执行语句执行语句2,最后执行语句,最后执行语句3. 顺序结构的程序是最简单的程序。顺序结构的程序是最简单的程序。 语句语句1 语句语句2 语句语句325 例例1.2 编写编写一个一个C语言程序,输出显示下列图形。语言程序,输出显示下列图形。 * C语言的学习要努力!语言的学习要努力! * 这是一个典型的顺序执行的程序设计,输出三个字符串,这是

14、一个典型的顺序执行的程序设计,输出三个字符串,输出字符串用函数输出字符串用函数printf()完成,具体的过程描述为:完成,具体的过程描述为:开始开始输出输出: * 换行后再换行后再输出输出:C语言的学习要努力!语言的学习要努力!换行后再换行后再输出输出:* 程序结束程序结束26程序流程图如图所示程序流程图如图所示:开始开始输出:*结束结束输出:C语言的学习要努力!语言的学习要努力!输出:*27 下面先介绍几个下面先介绍几个C语言程序语言程序, 使我们对使我们对C语言程序的特点语言程序的特点有一个初步认识和了解有一个初步认识和了解. 刚开始学习刚开始学习,可能在某些语法点上还有不理解的地方可能

15、在某些语法点上还有不理解的地方,可可以在以后的章节中得到解决和加深以在以后的章节中得到解决和加深.#include /*包含标准输入输出库预处理命令包含标准输入输出库预处理命令*/ int main( ) /*主函数开始主函数开始*/ printf(“*n”); printf(“C语言的学习要努力!语言的学习要努力!n”); printf(“*n”); return 0; /*程序结束程序结束*/ 虽然这是一个并不复杂的程虽然这是一个并不复杂的程序序, 但它包含了很多重要的语但它包含了很多重要的语法点和一个程序的框架法点和一个程序的框架.下面逐条进行分折讲解下面逐条进行分折讲解:28用用C语言

16、写成的源程序为:语言写成的源程序为:(P4)#include /*包含标准输入输出库预处理命令包含标准输入输出库预处理命令*/ int main( ) /*主函数开始主函数开始*/ printf(“*n”); printf(“C语言的学习要努力!语言的学习要努力!n”); printf(“*n”); return 0; /*程序结束程序结束*/ 1. main( )是主函数是主函数,每一个每一个C 程序程序都必须一个都必须一个main( )主函数主函数. 且只能有一个且只能有一个main( )主函数主函数.3. 这是一条这是一条编译预处理命令编译预处理命令. C语言程序设计中往往要用到输入与输

17、语言程序设计中往往要用到输入与输出函数出函数printf 、 sacnf, 因此要有文件包含因此要有文件包含命令命令:#include. 2. 函数体函数体用大括用大括号号 括起来。括起来。29 #include int main( ) printf(“*n”); printf(“C语言的学习要努力!语言的学习要努力!n”); /*输出一行字符输出一行字符*/ printf(“*n”); return 0; printf ( )函数是函数是C 语言中的专用输出函语言中的专用输出函数,数, 双引号内的字符串按原样输出双引号内的字符串按原样输出. /*/是是注释部分注释部分,对编,对编译和运行不起

18、作用,译和运行不起作用, 基本上基本上可放于程序任何地方可放于程序任何地方. n 是是一转义字一转义字符符 (为为换行符换行符). 语句最后有一语句最后有一个分号个分号 ; 。30#include int main( ) printf(“*n”); printf(“C语言的学习要努力!语言的学习要努力!n”); printf(“*n”); return 0; /*与与main函数中的函数中的int相对应相对应*/ main( )函数是由操作系统调用的函数是由操作系统调用的. 标准标准C+要求要求main( )函数声明函数声明为为int 型型. 如果程序正常执行如果程序正常执行,则则向操作系统返

19、回向操作系统返回0, 否则否则返回返回1. 细节问题将通过随后章节的学习,以及上机细节问题将通过随后章节的学习,以及上机练习来加深理解练习来加深理解.31 上机练习上机练习1 (P5)步骤步骤1: 在在Visual C+环境下新建文件环境下新建文件: 开始开始按钮按钮 所有程序所有程序 Microsoft Visual C+6.0 如果出现如果出现每日提示每日提示,如图所如图所示示,即点击关闭按扭。即点击关闭按扭。 32步骤步骤2 2: 在引导出的在引导出的C+C+集中开发环境中集中开发环境中, ,点击菜单:点击菜单: 文件文件 新建新建 33 在随后出现的在随后出现的”新建新建”对话框中对话

20、框中, ,点击菜单:点击菜单: 文件文件C+ SourseC+ Sourse File File 输入文件名输入文件名:如如:1_1.c指定存放此文件指定存放此文件的位置的位置:例如例如: D:VC+34步骤步骤3 3:在编辑框内输入在编辑框内输入C C源程序。源程序。35步骤步骤4 4:在:在Visual C+Visual C+环境下点击工具图标:环境下点击工具图标:进行编译进行编译( (相当相当:Ctrl+F7:Ctrl+F7), ), 产生产生 .obj.obj文件文件. . 出现对话框出现对话框( (英文英文):): 回答回答:是是 这条编译命令需要一个活动这条编译命令需要一个活动的工

21、程工作区的工程工作区.你要产生一个你要产生一个默认的工作区默认的工作区?36如果程序无错如果程序无错,编译通过编译通过.产生一个相应的产生一个相应的1_1.obj文文件件.37如果程序有错如果程序有错,编译没有通过编译没有通过.提示错误信息提示错误信息.38步骤步骤5 5:点击连接图标:点击连接图标: :现设程序无错现设程序无错,编译通过编译通过.进行连接进行连接( (相当相当:F7:F7), ), 产生产生 .exe.exe文件文件. . 39如果程序无错如果程序无错,连接通过连接通过.产生一个相应的产生一个相应的1_1.exe文件文件.40步骤步骤6 6:点击执行图标:点击执行图标: :进

22、行执行此进行执行此 1_1 .exe1_1 .exe文件文件. . 41思考:思考:1在例在例1-1.c中,如果中,如果没有没有main(),编译程序后出现的错,编译程序后出现的错误提示是什么?在误提示是什么?在C程序设计中要注意什么问题?程序设计中要注意什么问题?2在例在例1-1.c中,如把中,如把main写成了写成了Main,编译程序后出现,编译程序后出现的错误提示是什么?在的错误提示是什么?在C程序设计中要注意什么问题?程序设计中要注意什么问题?3在例在例1-1.c中,如中,如printf(“*n”); 后后少了少了“;”号,号,编译程序后出现的错误提示是什么?在编译程序后出现的错误提示

23、是什么?在C程序设计中要注程序设计中要注意什么问题?意什么问题?424在例在例1-1.c中中,如没有写上预处理命令如没有写上预处理命令#include,编译程序后出现的错误提示是什么?想想这是为什么?编译程序后出现的错误提示是什么?想想这是为什么?5在例在例1-1.c中,任何一行的输出语句中中,任何一行的输出语句中少了符号少了符号n,程序运行后的结果有什么变化?问在程序运行后的结果有什么变化?问在C语言中符号语言中符号n的作用是什么?的作用是什么?6在例在例1-1.c中,如中,如printf(“*n”); 后后少了双引少了双引号号,编译程序后出现的错误提示是什么?,编译程序后出现的错误提示是什

24、么?431.3.2 分支结构分支结构 在程序执行过程中,程序的流程可由多路分支组成,根在程序执行过程中,程序的流程可由多路分支组成,根据不同的条件去执行不同的语句块。据不同的条件去执行不同的语句块。 这是一个两分支结构。这是一个两分支结构。 首先判断条件是否为首先判断条件是否为“真真”,如为真如为真,执行语句块执行语句块1,否则执,否则执行语句块行语句块2。 语句块语句块2 2 语句块语句块1 1 假假真真条件条件44 假如判断从键盘输入的两个数的大小假如判断从键盘输入的两个数的大小: 如果如果: xy,提示:,提示:x大于大于y. 如果如果: xy?输出输出x x小于小于y y真真假假输出输

25、出x大于大于y下一步下一步此时将会用到如下所示的流程图此时将会用到如下所示的流程图:45例例1.3 从键盘输入两个数,判断两个数的大小。从键盘输入两个数,判断两个数的大小。分析:这是一个分支程序设计,具体的过程描述为:分析:这是一个分支程序设计,具体的过程描述为:程序开始程序开始定义两个变量定义两个变量: x,y输入二个数给输入二个数给x,y如果如果x大于大于y输出输出:x大于大于y否则否则输出输出:x小于小于y程序结束程序结束46 开始开始给给x,y输入相应的值输入相应的值 定义两个变量定义两个变量:x,y 结束结束 xy?x小于小于y x大于大于y 两数中求最大值流程图两数中求最大值流程图

26、真真假假47例例1.3 用用C语言写成的源程序为语言写成的源程序为: (P8)#include int main( ) int x, y; /*定义二个变量定义二个变量*/ scanf(“%d%d”,&x,&y); /*读入两个整型数给变量读入两个整型数给变量x、y*/ if(xy) /*如果如果x大于大于y*/ printf(“x大于大于yn”); /*输出:输出:x大于大于y */ else /*否则否则*/ printf(“x小于小于yn”); /*输出:输出:x小于小于y */ return 0; 这一行为变量定义这一行为变量定义,指明指明 x, y是是整型变量整型变量

27、(integer)。 scanf( ) 函数是专用的输入函数函数是专用的输入函数. &的含义是的含义是“取地址取地址”的意思,函数的作用的意思,函数的作用是:从键盘输入的两个值是:从键盘输入的两个值,分别送到分别送到 x,y所占地所占地址的内存单元中去址的内存单元中去,也就是输入也就是输入x, y的值的值. %d为输入格式说明为输入格式说明, d为十为十进制整数格式说明符。进制整数格式说明符。两分支结构两分支结构48上机练习上机练习 步骤步骤1:调出调出VC+ 6.0,关闭,关闭“每日提示每日提示”。 步骤步骤2:点击菜单:点击菜单:文件文件 新建新建文件文件 C+ Sourse Fi

28、le 输入文件名输入文件名1-2.c,点击确定按扭。点击确定按扭。步骤步骤3:在编辑框内输入在编辑框内输入C源程序源程序1-2.c。49步骤步骤4 4:点击图标点击图标 进行进行编译源程序编译源程序1-2.c,产生可执行文件产生可执行文件1-2.obj。步骤步骤5 5:点击连接图标:点击连接图标: :进行连接进行连接, , 产生产生 .exe.exe文件文件. . 执行程序执行程序1_2.exe1_2.exe步骤步骤6: 点击执行图标点击执行图标50程序运行结果如图所示。程序运行结果如图所示。程序运行时输入程序运行时输入:1000 500 (然后回车然后回车).两数间用空格分隔两数间用空格分隔

29、.51程序运行结果程序运行结果数据输入行的显示数据输入行的显示.程序运行后程序运行后,结果显示结果显示.52思考:思考:1在例在例1_2.c中,如果中,如果没有语句没有语句int x,y;编译程序后出现编译程序后出现的错误提示是什么?在的错误提示是什么?在C程序设计中要注意什么问题?程序设计中要注意什么问题?2在例在例1_2.c中,如把语句中,如把语句scanf(“%d %d”,&x,&y); 写成:写成:scanf(“%d %d”,x,y); 用来用来读入两个整型数给变量读入两个整型数给变量x、y,程,程序的运行结果会如何?序的运行结果会如何?533在例在例1-2.c中,如程

30、序在运行时输入为:中,如程序在运行时输入为:1000,500,程,程序能否得出正确的运行结果?序能否得出正确的运行结果?4在例在例1-2.c中,如果在中,如果在if(xy) 后加上后加上“;”号,编译号,编译程序后出现的错误提示是什么?想想这是为什么?程序后出现的错误提示是什么?想想这是为什么?5在例在例1-2.c中,输入源程序后,中,输入源程序后,int、if、else为什么会为什么会变颜色,在变颜色,在C程序设计中有什么特殊的意义?程序设计中有什么特殊的意义? 541.3.3 循环结构循环结构 如果在程序中需要根据某项条件重复地执行某项任务如果在程序中需要根据某项条件重复地执行某项任务若干

31、次,直到满足或不满足某条件为止,这就构成循环结若干次,直到满足或不满足某条件为止,这就构成循环结构。构。 循环条件循环条件?初始条件初始条件循环语句循环语句假假真真 循环语句执行完成后,又转循环语句执行完成后,又转去判断循环条件,如循环条去判断循环条件,如循环条件仍为真,再次执行循环语件仍为真,再次执行循环语句,如此反复,直到循环条句,如此反复,直到循环条件为假,退出此循环。件为假,退出此循环。 注注: 循环不是简单的重复循环不是简单的重复.首先判断循环条件是否首先判断循环条件是否为为“真真”,如循环条件,如循环条件为为“真真”,执行循环语,执行循环语句句.55 例如,要做一个累加运算,从例如

32、,要做一个累加运算,从1加到加到100. 算法是:算法是: 先把计数变量先把计数变量i 和和 sum设为设为0,然后变量,然后变量i从从1开始,把开始,把1加入总数;然后加入总数;然后i增加增加1,i为为2,把,把i加入总数;然后加入总数;然后i再增加再增加1,i为为3,再把,再把i加入总数;加入总数; 一直累加,当一直累加,当i为为100加入总数后,加入总数后,i还要增加还要增加1,到,到i的值的值为为101,此时条件不满足此时条件不满足,循环不再做。,循环不再做。 最后的总数就是最后的总数就是1加到加到100的和。的和。56例例1.4 计算计算1+2+3+4+100的值,用循环的方法,画的值,用循环的方法,画出程序的流程图。出程序的流程图。分析:分析: 和的初始值和的初始值sum为为0,循环变量,循环变量i的变化从的变化从

温馨提示

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

评论

0/150

提交评论