《C语言完整版(精华)课件.ppt》由会员分享,可在线阅读,更多相关《C语言完整版(精华)课件.ppt(484页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机程序设计基础计算机程序设计基础(C语言)语言)1.1.课堂要求很严格。2.多听,适时做笔记。3.上课不能讲闲话。4.课后认真完成作业、实验报告。5.有问题,及时与老师联系。教学要求2.选用教材与参考书n n主教科书主教科书主教科书主教科书顾治华、陈天煌等顾治华、陈天煌等C C C C语言程序设计语言程序设计语言程序设计语言程序设计机械工业出版社机械工业出版社机械工业出版社机械工业出版社 2007.22007.2n n参考教材参考教材参考教材参考教材 顾治华、陈天煌等顾治华、陈天煌等顾治华、陈天煌等顾治华、陈天煌等C C C C语言程序设计语言程序设计语言程序设计语言程序设计 实验实验实验
2、实验指导指导指导指导 机械工业出版社机械工业出版社机械工业出版社机械工业出版社 2007.22007.22007.22007.2n n参考书参考书参考书参考书 谭浩强谭浩强C C C C语言程序设计语言程序设计语言程序设计语言程序设计 清华大学出版社清华大学出版社清华大学出版社清华大学出版社3.课程内容课程内容第一章第一章 C C语言程序设计概述语言程序设计概述 第二章第二章 算法及算法设计简介算法及算法设计简介 第三章第三章 数据描述与基本操作数据描述与基本操作第四章第四章 选择结构程序设计选择结构程序设计 第五章第五章 循环结构程序设计循环结构程序设计 第六章第六章 数组与指针数组与指针第
3、七章第七章 函数与模块化程序设计方法函数与模块化程序设计方法4.第一章第一章 语言程序设计概述语言程序设计概述5.1.1程序设计的概念程序设计的概念1.2语言的产生及发展语言的产生及发展1.3简单程序介绍简单程序介绍1.4 C程序的上机步骤程序的上机步骤1.5C语言的基本语法和基本结构语言的基本语法和基本结构1.6本章要点小结本章要点小结6.1.1 程序设计的概念程序设计的概念1.1.1 程序设计语言程序设计语言1.1.2 程序设计的概念程序设计的概念7.计算机计算机n计算机是用来延伸人的能力的工具,需要人来计算机是用来延伸人的能力的工具,需要人来驾驭驾驭n我们的职责是让非计算机专业的人更容易
4、驾驭我们的职责是让非计算机专业的人更容易驾驭它它n完成这一目标的主要手段之一就是完成这一目标的主要手段之一就是“编程编程(Programming)”8.计算机基本工作过程计算机基本工作过程n整个过程的执行者是硬件,但硬件是受软件控制的整个过程的执行者是硬件,但硬件是受软件控制的n编程,就是编写软件,使硬件按照人的意图工作编程,就是编写软件,使硬件按照人的意图工作9.计算机基本工作过程计算机基本工作过程输入/输出设备存储器运算器控制器源程序和输入数据输出结果取出数据存入数据操作命令存取命令取出程序指令输入输出命令计算结果CPU“冯冯诺依曼机诺依曼机”结构结构 大脑大脑眼眼/耳耳/口口程序和数据执
5、行结果10.软件的形成软件的形成n软件(软件(Software)的形成)的形成q程序员程序员(Programmer)编写程序)编写程序源代码源代码(Source Code)q编译器编译器(Compiler)把源代码转换为可被计算机理)把源代码转换为可被计算机理解的解的机器代码机器代码(Machine Code)q并把机器代码以并把机器代码以可可执行文件执行文件(Executable File)的)的形式保存在磁盘上形式保存在磁盘上11.CPU指令系统,由0、1序列构成的指令码组成如:10000000加10010000减用助记符号描述的指令系统如ADDA,B面向机器的语言程序设计是数据被加工的过
6、程客观世界可以分类,对象是类的实例对象是数据和方法的封装对象间通过发送和接受消息发生联系程序设计关键是定义类,并由类派生对象1.1.1 程序设计语言程序设计语言12.程序设计语言的故事程序设计语言的故事n计算机为什么用二进制呢?计算机为什么用二进制呢?n为什么不用我们日常熟悉的十进制呢?为什么不用我们日常熟悉的十进制呢?q二进制在在电器元件中容易实现二进制在在电器元件中容易实现 q计算机进行二进制运算比进行十进制运算要简单得计算机进行二进制运算比进行十进制运算要简单得多多 13.程序设计语言的故事程序设计语言的故事n机器语言编写的机器语言编写的1+1程序程序n汇编语言(汇编语言(Assembl
7、e Language)编写的)编写的1+1程序程序101110000000000100000000000001010000000100000000MOV AX,1ADD AX,114.程序设计语言的故事程序设计语言的故事nBASIC语言编写的语言编写的1+1程序程序nC语言编写的语言编写的1+1程序程序PRINT 1+1#include main()printf(%dn,1+1);15.52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96AdaALGOL60ALGOL68PascalModula-2CPLBCP
8、L BCC+JavaLISPPROLOGCOBOLFORTRAN77FORTRANPL/1Simula67Smalltalk80BASICANSI-BASICQBASIC VBFORTRAN9016.1.1.2 程序设计的概念程序设计的概念程序设计就是用计算机语言来程序设计就是用计算机语言来编写程序的过程。编写程序的过程。什么是程序?著名计算机科学什么是程序?著名计算机科学家沃思提出有名的公式:家沃思提出有名的公式:算法算法+数据结构数据结构=程序程序17.算法即问题的求解过程、计算机算法即问题的求解过程、计算机的工作步骤。的工作步骤。数据结构即对参与运算的数据怎数据结构即对参与运算的数据怎样
9、进行合理的组织、安排,以提高程样进行合理的组织、安排,以提高程序运行的效率和求解的精确性。序运行的效率和求解的精确性。程序的两大要素:数据结构、算法程序的两大要素:数据结构、算法18.1.2 C语言的产生和发展语言的产生和发展1.2.1 C语言的产生语言的产生 1.2.2 C语言的发展语言的发展1.2.3 C语言的特点语言的特点19.1.2.1 C 语言的产生语言的产生n一切从一个叫一切从一个叫“Space Travel”Space Travel”的电子游戏开始的电子游戏开始的的nKen ThompsonKen Thompson为了让他的游戏能在为了让他的游戏能在PDP-7PDP-7上运行,上
10、运行,用汇编语言给用汇编语言给PDP-7PDP-7写了一个操作系统写了一个操作系统UNIXUNIXn汇编太不好用了,汇编太不好用了,ThompsonThompson需要高级语言需要高级语言n试验了一些高级语言,包括试验了一些高级语言,包括FortranFortran,都不理想,都不理想n他在他在BCPLBCPL基础上,自己设计了一个基础上,自己设计了一个B B语言语言nUNIXUNIX开始发展,开始发展,B B也不够用了也不够用了nDennis RitchieDennis Ritchie加入,把加入,把B B改造成改造成C C n开始用开始用C C重写重写UNIXUNIX20.1.2.2 C
11、语言的发展语言的发展qC语言发展过程语言发展过程n产生过程产生过程q时间时间:19721973q地点地点:美国贝尔实验室美国贝尔实验室q目的目的:UNIX操作系统操作系统q设计人设计人:Ken.Thompson和和Dennis.M.RitchienC标准标准q标准标准C:K&R合著合著The C Programming LanguageqANSI C:1983年年q87 ANSI C:1987年年q1990年国际标准的年国际标准的ANSI C21.Ritchie和Thompson在开发UNIX22.接受美国国家技术勋章接受美国国家技术勋章23.C语言的祖师爷语言的祖师爷Dennis M.Rit
12、chie24.Ritchie漫画像25.1.C语言本身既有一般高级语言的特点,又由低级语言本身既有一般高级语言的特点,又由低级语言(汇编语言)的特点。语言(汇编语言)的特点。2.C语言是一种结构化的程序设计语言,它具有实语言是一种结构化的程序设计语言,它具有实现顺序、分支、循环三种基本结构化控制的语句。现顺序、分支、循环三种基本结构化控制的语句。3.C语言简洁,紧凑,使用方便灵活。只有语言简洁,紧凑,使用方便灵活。只有32个保个保留字,留字,9种控制语句,书写形式自由。种控制语句,书写形式自由。4.数据类型丰富。有整型、实型、字符型、数组型、数据类型丰富。有整型、实型、字符型、数组型、指针型、
13、结构体型、共用体型和枚举型等。指针型、结构体型、共用体型和枚举型等。1.2.3C语言的特点语言的特点26.5、运算功能强。有、运算功能强。有32种运算符,包括了算术运算、种运算符,包括了算术运算、关系运算、逻辑运算、位运算、指针运算等。关系运算、逻辑运算、位运算、指针运算等。6、目标代码质量高,运行速度快。、目标代码质量高,运行速度快。7、可移植性强。、可移植性强。8、语法限制不太严格,程序设计自由度大。、语法限制不太严格,程序设计自由度大。1.2.3C语言的特点语言的特点27.C 语言是编译型语言语言是编译型语言n 一种编译语言对应一种编译器一种编译语言对应一种编译器 q按照该语言的语法编写
14、程序源代码,把自己的思想按照该语言的语法编写程序源代码,把自己的思想融入到代码中融入到代码中 q编译器读入源代码,把程序员的意图转换成可执行编译器读入源代码,把程序员的意图转换成可执行程序,供他人使用程序,供他人使用28.C语言与计算机系统层次关系语言与计算机系统层次关系29.1.3 简单简单C程序介绍程序介绍30.nC程序格式和结构特点程序格式和结构特点第一个程序第一个程序 Hello,World!/*example1.1ThefirstCProgram*/#includemain()printf(“Hello,World!”);注释编译预处理函数语句输出:Hello,World!31./*
15、example1.2calculatethesumofaandb*/#include/*Thisisthemainprogram*/main()inta,b,sum;a=10;b=24;sum=add(a,b);printf(”sum=%dn,sum);/*Thisfunctioncalculatesthesumofxandy*/intadd(intx,inty)intz;z=x+y;return(z);运行结果:运行结果:sum=34语句语句预处理命令注释注释主函数子函数32.q格式特点格式特点n习惯用习惯用小写小写字母,大小写敏感字母,大小写敏感n不使用行号,不使用行号,无程序行无程序行概
16、念概念n可使用空行和空格可使用空行和空格n常用常用锯齿形锯齿形书写格式书写格式main().main()inti,j,sum;sum=0;for(i=1;i10;i+)for(j=1;j10;j+)sum+=i*j;printf(“%dn”,sum);优秀程序员的素质之一:使用TAB缩进对齐有足够的注释有合适的空行33.q结构特点结构特点n函数与主函数函数与主函数q程序由一个或多个函数组成程序由一个或多个函数组成q必须有且只能有一个主函数必须有且只能有一个主函数main()q程序执行从程序执行从main开始,在开始,在main中结束,其它函数通过嵌套中结束,其它函数通过嵌套调用得以执行。调用得
17、以执行。n程序语句程序语句qC程序由语句组成程序由语句组成q用用“;”作为语句终止符作为语句终止符n注释注释q/*/为注释为注释,不能嵌套不能嵌套q不产生编译代码不产生编译代码例:/*Thisisthemain/*ofexample1.1*/*/非法n编译预处理命令编译预处理命令函数首部函数首部:包括函数名、函数类型、函数参数名、包括函数名、函数类型、函数参数名、参数类型。参数类型。函数体:声明部分函数体:声明部分,执行部分。执行部分。34.1.4 C C程序的上机步骤程序的上机步骤35.编辑链接编译执行程序代码的录入,生成源程序*.c语法分析查错,翻译生成目标程序*.obj与其它目标程序或库
18、链接装配,生成可执行程序*.exe开始编辑编译有错?执行连接结果正确结束可执行目标程序f.exe源程序f.c目标程序f.obj库函数和其他目标程序YesNoYesNo36.1.5 C语言的基本语法和结构语言的基本语法和结构1.5.1 C语言的基本语法语言的基本语法 1.5.2 C语言的基本结构语言的基本结构37.1.5.1 C语言的基本语法语言的基本语法n标识符标识符n关键字关键字n运算符运算符n分隔符分隔符n常量常量n注释符注释符n字符集字符集38.标识符标识符n常量、变量、语句标号以及自定义函数的名称常量、变量、语句标号以及自定义函数的名称n只能是只能是字母、数字和下划线字母、数字和下划线
19、组成的字符串,组成的字符串,第第一个字符必须是字母或下划线一个字符必须是字母或下划线n标准标准C不限制标识符长度,但一般不超过不限制标识符长度,但一般不超过8字符字符n标识符大小写有区别标识符大小写有区别n标识符名最好能标识符名最好能“顾名思义顾名思义”39.3232个关键字个关键字:(由系统定义,不能重作其它定义由系统定义,不能重作其它定义)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswit
20、chtypedefunsignedunionvoidvolatilewhile40.9 9种控制语句种控制语句:if()else switchcasefor()while()dowhile()continuebreakgotoreturn41.3434种运算符:种运算符:算术运算符:算术运算符:+-*/%+-+-*/%+-关系运算符:关系运算符:=!=!=逻辑运算符:!逻辑运算符:!&|&|位运算符位运算符 :|&|&赋值运算符:赋值运算符:=及其扩展及其扩展条件运算符:条件运算符:?:?:逗号运算符:逗号运算符:,指针运算符:指针运算符:*&求字节数求字节数 :sizeofsizeof强制类
21、型转换:强制类型转换:(类型)类型)分量运算符:分量运算符:.-.-下标运算符:下标运算符:其它其它 :()-()-42.1.5.2 C语言的基本结构语言的基本结构(1)顺序结构)顺序结构 ABab43.(2)选择结构选择结构,或称分支结构此结构中必包含一个判断框。根据给定的条件P是否成立而选择执行A框或B框abBAp不成立成立44.(3)循环结构循环结构,它又称为重复结构,即反复执行某一部分的操作。又两类循环结构:a.当型(当型(while型)循环结构型)循环结构ap1TFAbb.直到型(直到型(Until型)循环结构型)循环结构 aATFbp245.1.6 本章要点小结本章要点小结n n程
22、序设计的概念程序设计的概念n nC语言的产生及发展语言的产生及发展n nC语言的特点语言的特点n nC程序的介绍和上机步骤程序的介绍和上机步骤n nC语言的基本语法和结构语言的基本语法和结构46.本章课堂练习本章课堂练习(1)以下说法中正确正确的是().A)C语言程序总是从第一个函数开始执行 B)在C语言程序中,要调用的函数必须在main()函数中定义 C)C语言程序总是从main()函数开始执行 D)C语言程序中的main()函数必须放在程序的开始部分47.解答:C解释:C语言程序总是从main()函数开始执行,而不论其在程序中的位置。当主函数执行完毕时,亦即程序执行完毕。除main函数外,
23、其它函数都是在执行main函数时被调用执行的。在C语言中,函数不允许嵌套定义。习惯上,将主函数main()放在最前头,但并不是必须的。48.(2)以下叙述不正确不正确的是A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C)C程序的基本组成单位是函数 D)在C程序中,注释说明只能位于一条语句的后面49.解答:D解释:凡是用“/*”和“*/”括起来的文字,都是注释。其出现的位置可以任意。50.(3)下列标识符中,合法合法的变量名有:A)a.b B)$888 C)A1 D)3x56 51.解答:C解释:变量名只能由字母、数字和下划线三种字符所组成,且第一个字符必须为字母
24、或下划线。C语言的关键字不能用作变量名。另外,C语言对英文字母的大小写敏感,即同一字母的大小写,被认为是两个不同的字符。习惯上,变量名和函数名中的英文字母用小写,以增加可读性。52.第二章第二章 程序的灵魂程序的灵魂:算法算法 .n一个程序主要包括以下两方面的信息:一个程序主要包括以下两方面的信息:(1)对数据的描述对数据的描述。在程序中要指定用到。在程序中要指定用到哪哪些些数据以及这些数据的类型和数据的组织形式数据以及这些数据的类型和数据的组织形式q这就是数据结构这就是数据结构(data structure)(2)对操作的描述对操作的描述。即要求计算机进行操作的。即要求计算机进行操作的步骤步
25、骤q也就是算法也就是算法(algorithm).n数据是操作的对象数据是操作的对象n操作的目的是对数据进行加工处理,以得到操作的目的是对数据进行加工处理,以得到期望的结果期望的结果n著名计算机科学家沃思著名计算机科学家沃思(Nikiklaus Wirth)提提出一个公式:出一个公式:算法算法+数据结构数据结构=程序程序.n一个程序除了一个程序除了算法和数据结构这算法和数据结构这主要要素外,主要要素外,还应当采用结构化程序设计方法进行程序设计,还应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言表示并且用某一种计算机语言表示n算法算法、数据结构数据结构、程序设计方法程序设计方法和和语
26、言工具语言工具是是一个程序设计人员应具备的知识一个程序设计人员应具备的知识q算法算法数据结构数据结构程序设计方法程序设计方法语言工具和环境语言工具和环境程序程序.n算法是解决算法是解决“做什么做什么”和和“怎么做怎么做”的问题的问题n程序中的操作语句,是算法的体现程序中的操作语句,是算法的体现n不了解算法就谈不上程序设计不了解算法就谈不上程序设计.2.1算法的概念算法的概念2.2算法的特性算法的特性2.3算法的表示算法的表示2.4结构化程序设计方法结构化程序设计方法.2.1 算法的概念算法的概念n广义地说,为解决一个问题而采取的方法和步广义地说,为解决一个问题而采取的方法和步骤,就称为骤,就称
27、为“算法算法”n对同一个问题,可以有不同的解题方法和步骤对同一个问题,可以有不同的解题方法和步骤n为了有效地进行解题,不仅需要保证算法正确,为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法还要考虑算法的质量,选择合适的算法.n计算机算法可分为两大类别:计算机算法可分为两大类别:q数值运算算法数值运算算法q非数值运算算法非数值运算算法n数值运算数值运算的目的是求数值解的目的是求数值解n非数值运算非数值运算包括的面十分广泛,最常见的是包括的面十分广泛,最常见的是用于事务管理领域用于事务管理领域2.1 算法的概念算法的概念.n可以用最原始的方法进行:可以用最原始的方法进行
28、:q步骤步骤1:先求:先求1*2,得到结果,得到结果2。q步骤步骤2:将步骤:将步骤1得到的乘积得到的乘积2再乘以再乘以3,得到结,得到结果果6。q步骤步骤3:将:将6再乘以再乘以4,得,得24。q步骤步骤4:将:将24再乘以再乘以5,得,得120。这就是最后的结。这就是最后的结果。果。例例2.1求求12345 100太繁琐太繁琐例例2.1求求12345简单算法的举例概念简单算法的举例概念.n改进的算法:q设变量p为被乘数q变量i为乘数q用循环算法求结果求求12345简单算法的举例概念简单算法的举例概念.nS1:使p=1,或写成1pnS2:使i=2,或写成2inS3:使p与i相乘,乘积仍放在变
29、量p中,可表示为:p*ipnS4:使i的值加1,即i+1inS5:如果i不大于5,返回重新执行S3;否则,算法结束n最后得到p的值就是5!的值若是若是100,求什么?,求什么?简单算法的举例概念简单算法的举例概念.例例2.2 有有50个学生,要求将成绩在个学生,要求将成绩在80-90分的学分的学生的学号和成绩输出。生的学号和成绩输出。n用用ni代表第代表第i个学生个学生学号,学号,gi表示第表示第i个学生成绩个学生成绩S1:1iS2:如果:如果90 gi80,则输出则输出ni和和gi,否则不输出,否则不输出S3:i+1iS4:如果:如果i50,返回到步骤,返回到步骤S2,继续执行,继续执行,否
30、则,算法结束否则,算法结束.2.1算法的概念算法的概念2.2算法的特性算法的特性2.3算法的表示算法的表示2.4结构化程序设计方法结构化程序设计方法.n一个有效算法应该具有以下一个有效算法应该具有以下特点特点:(1)有穷性有穷性。一个算法应包含有限的操。一个算法应包含有限的操作步骤,而不能是无限的。作步骤,而不能是无限的。(2)确定性确定性。算法中的每一个步骤都应。算法中的每一个步骤都应当是确定的,而不应当是含糊的、模当是确定的,而不应当是含糊的、模棱两可的。棱两可的。2.2 算法的特性算法的特性.n一个有效算法应该具有以下一个有效算法应该具有以下特点特点:(3)有零个或多个输入有零个或多个输
31、入。所谓输入是指在。所谓输入是指在执行算法时需要从外界取得必要的信息。执行算法时需要从外界取得必要的信息。(4)有一个或多个输出有一个或多个输出。算法的目的是为。算法的目的是为了求解,了求解,“解解”就是输出。就是输出。q没有输出的算法是没有意义的。没有输出的算法是没有意义的。(5)有效性有效性。算法中的每一个步骤都应当。算法中的每一个步骤都应当能有效地执行,并得到确定的结果。能有效地执行,并得到确定的结果。2.2 算法的特性算法的特性.n对于一般最终用户来说对于一般最终用户来说:q他们并不需要在处理每一个问题时都要他们并不需要在处理每一个问题时都要自己设计算法和编写程序自己设计算法和编写程序
32、q可以使用别人已设计好的现成算法和程可以使用别人已设计好的现成算法和程序序q只需根据已知算法的要求给予必要的输只需根据已知算法的要求给予必要的输入,就能得到输出的结果入,就能得到输出的结果输入输入3个数个数黑箱子黑箱子3个数中最大数个数中最大数求求3个数的个数的最大数最大数2.2 算法的特性算法的特性.2.1算法的概念算法的概念2.2算法的特性算法的特性2.3算法的表示算法的表示2.4结构化程序设计方法结构化程序设计方法.n常用的方法有:常用的方法有:q自然语言自然语言q传统流程图传统流程图q结构化流程图结构化流程图q伪代码伪代码q2.3 算法的表示算法的表示.自然语言表示法自然语言表示法n2
33、.1节节例子例子介绍的算法是用自然语言表示的介绍的算法是用自然语言表示的n用自然语言表示通俗易懂,但文字冗长,容易用自然语言表示通俗易懂,但文字冗长,容易出现歧义性出现歧义性n用自然语言描述包含分支和循环的算法,不很用自然语言描述包含分支和循环的算法,不很方便方便n除了很简单的问题外,一般不用自然语言除了很简单的问题外,一般不用自然语言.传统的程序流程图传统的程序流程图用一些图形符号形象直观的表述算法,上表给出用一些图形符号形象直观的表述算法,上表给出了了ANSI 规定的程序流程图符号。规定的程序流程图符号。n流程图流程图是用一些图框来表示各种操作是用一些图框来表示各种操作n用图形表示算法,直
34、观形象,易于理解用图形表示算法,直观形象,易于理解.x 0YN一个入口一个入口两个出口两个出口传统的程序流程图传统的程序流程图.位置不够位置不够防止交叉防止交叉传统的程序流程图传统的程序流程图.例例2.4 将例将例2.1的算法用的算法用流程图表示。流程图表示。求求12345n如果需要将最后结果输如果需要将最后结果输出出:1t输出输出ti5开始开始2it*iti+1i结束结束NY.n通过以上几个例子可以看出流程图是表通过以上几个例子可以看出流程图是表示算法的较好的工具示算法的较好的工具n一个流程图包括以下几部分一个流程图包括以下几部分:(1)表示相应操作的框表示相应操作的框(2)带箭头的流程线带
35、箭头的流程线(3)框内外必要的文字说明框内外必要的文字说明n流程线不要忘记画箭头,流程线不要忘记画箭头,否则否则难以判定难以判定各框的执行次序各框的执行次序传统的程序流程图传统的程序流程图.n特点:绘制简单,描述直观,之前广泛使用。特点:绘制简单,描述直观,之前广泛使用。n缺点:缺点:q程序流程图不易表示算法或程序的层次结构。程序流程图不易表示算法或程序的层次结构。q用箭头表示的控制流可能引起随意的转移控制。用箭头表示的控制流可能引起随意的转移控制。q可能诱使人们过早地考虑局部程序的控制结构而忽可能诱使人们过早地考虑局部程序的控制结构而忽视全局的程序结构。视全局的程序结构。q不易表示数据结构和
36、程序模块之间的关系。不易表示数据结构和程序模块之间的关系。传统的程序流程图传统的程序流程图.NS图表示法图表示法 1973 1973年美国学者年美国学者I.NassiI.Nassi和和B.ShneidermanB.Shneiderman提提出了一种新的流程图形式。在这种流程图中,完出了一种新的流程图形式。在这种流程图中,完全去掉了带箭头的流程线。全部算法写在一个矩全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包含其他的从属于它的形框内,在该框内还可以包含其他的从属于它的框。框。这种流程图又称这种流程图又称NSNS结构化流程图(结构化流程图(N N和和S S是两位美国学者的英文
37、姓名的第一个字母)。是两位美国学者的英文姓名的第一个字母)。这种流程图适于结构化程序设计,因此很受欢这种流程图适于结构化程序设计,因此很受欢迎。迎。.nN-S流程图用以下的流程图符号:ABABYNpA当当p1成立成立A直到直到p2成立成立顺序结构顺序结构选择结构选择结构循环结构循环结构(当型)(当型)循环结构循环结构(直到型)(直到型)NS图表示法图表示法.用伪码表示算法用伪码表示算法 伪代码是用介于自然语言和计算机语言伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。它不用图之间的文字和符号来描述算法。它不用图形符号,因此书写方便,格式紧凑,也比形符号,因此书写方便,格式紧凑,也
38、比较好懂,便于向计算机语言算法(即程序)较好懂,便于向计算机语言算法(即程序)过渡。过渡。.BEGIN(算法开始算法开始)1=iWhile ii1=i While i=80 and giiEND(算法结束)(算法结束)前例用伪代码表示算法如下:.用计算机语言表示算法用计算机语言表示算法 n要完成一项工作,包括要完成一项工作,包括设计算法设计算法和和实现算法实现算法两个部分。两个部分。n设计算法的目的是为了实现算法。设计算法的目的是为了实现算法。n不仅要考虑如何设计一个算法,也要考虑如不仅要考虑如何设计一个算法,也要考虑如何实现一个算法。何实现一个算法。.用用C语言程序实现前例如下语言程序实现前
39、例如下#include/*打印出50名同学中成绩在80-90分者*/main()inti,g50,n50;for(i=0;i50;i+)/*输入50名同学的学号,成绩*/scanf(“%d,%d”,&ni,&gi);for(i=0;i=80)&(gi=90)printf(“%6d,%3dn”,ni,gi);fc1.cfc1.c.2.1算法的概念算法的概念2.2算法的特性算法的特性2.3算法的表示算法的表示2.4结构化程序设计方法结构化程序设计方法.2.4 结构化程序设计方法简介结构化程序设计方法简介 荷兰学者荷兰学者E.W.dijkctra提出了结构化程序提出了结构化程序设计(设计(struc
40、turedprogramming)的理论,成的理论,成为为70年代中期至年代中期至90年代初的程序设计主流。年代初的程序设计主流。结构化程序设计方法提出了一些大家都要遵结构化程序设计方法提出了一些大家都要遵循的原则,这些原则归纳为循的原则,这些原则归纳为32个字:个字:自顶向下,逐步细化。自顶向下,逐步细化。模块设计,结构编码。模块设计,结构编码。清晰第一,效率第二。清晰第一,效率第二。书写规范,缩进格式。书写规范,缩进格式。.顺序、分支和循环三种基本结构的共同特点:顺序、分支和循环三种基本结构的共同特点:(1)只有一个入口。只有一个入口。(2)只有一个出口。只有一个出口。(3)结构内的每一部
41、分都有机会被执行到。也就是结构内的每一部分都有机会被执行到。也就是说,对每一个框来说,都有从入口到出口的路径说,对每一个框来说,都有从入口到出口的路径通过它。通过它。(4)结构内不存在结构内不存在“死循环死循环”(无终止的循环)。(无终止的循环)。.结构化程序结构化程序 所谓结构化程序,就是仅仅使用顺序、选择、所谓结构化程序,就是仅仅使用顺序、选择、循环等三种基本结构所构造的程序。循环等三种基本结构所构造的程序。结构化程序设计方法结构化程序设计方法 结构化程序设计方法的基本思想是,把一个复杂结构化程序设计方法的基本思想是,把一个复杂问题的求解过程分阶段进行。每个阶段的问题都问题的求解过程分阶段
42、进行。每个阶段的问题都控制在人们容易理解和处理的范围内。控制在人们容易理解和处理的范围内。.2.4 本章要点小结本章要点小结n n 算法的概念算法的概念n n算法的特性算法的特性n n 算法的表示算法的表示n n 结构化程序设计方法结构化程序设计方法.第三章第三章 数据描述与数据描述与 基本操作基本操作 89.n3.1基本数据类型基本数据类型n3.2运算符和表达式运算符和表达式n3.3输入输出操作输入输出操作90.3.1 基本数据类型基本数据类型n3.1.1 C语言的数据类型语言的数据类型n3.1.2 常量和变量常量和变量n3.1.3 数据类型转换数据类型转换91.3.1.1 C3.1.1 C
43、语言的数据类型语言的数据类型(一)什么是数据类型?(二)C语言的数据类型有哪些?92.(一一)什么是数据类型?什么是数据类型?数据结构+算法=程序C语言中以“数据类型”形式存在对数据的描述对操作的描述93.数据类型基本类型整型(有符号、无符号)字符型实型(浮点型)枚举类型构造类型数组类型结构体类型共用体类型指针类型空类型单精度型双精度型在程序中对用到的所有数据都必须指定其数据类型.?不同类型的数据,所占内存的字节数不同,对应的操作也不相同。(二二)C)C的数据类型的数据类型94.整型数据整型数据1.整型数据的分类整型数据的分类n最基本的整型类型最基本的整型类型q基本整型基本整型(int型型):
44、占:占2个或个或4个字节个字节(32位编译位编译系统系统)q短整型短整型(short int):VC+6.0中占中占2个字节个字节q长整型长整型(long int):VC+6.0中占中占4个字节个字节q双长整型双长整型(long long int):C99新增的新增的,64位占位占8个字节,个字节,VC+6.0中定义为中定义为 _int6495.2.整型变量的符号属性整型变量的符号属性q整型变量的值的范围包括负数到正数整型变量的值的范围包括负数到正数q可以将变量定义为可以将变量定义为“无符号无符号”类型类型q扩充的整形类型:扩充的整形类型:n有符号基本整型signedint;n无符号基本整型u
45、nsignedint;n有符号短整型signedshortint;n无符号短整型unsignedshortint;n有符号长整型signedlongint;n无符号长整型unsignedlongint;整型数据96.字符型数据字符型数据n字符是按其代码字符是按其代码(整数整数)形式存储的形式存储的nC99把字符型数据作为整数类型的一种把字符型数据作为整数类型的一种n字符型数据在使用上有自己的特点字符型数据在使用上有自己的特点97.1.字符与字符代码字符与字符代码大多数系统采用大多数系统采用ASCII字符集字符集q字母:字母:A Z,a zq数字:数字:09q专门符号:专门符号:29个:个:!”
46、#&()*等等q空格符:空格、水平制表符空格符:空格、水平制表符t、换行、换行n等等q不能显示的字符:不能显示的字符:空空(null)字符字符(以以0表示表示)、鸣铃鸣铃(以以a表示表示)、退格退格(以以b表示表示)、回车、回车(以以r表示表示)等等字符型数据98.n字符字符1和整数和整数1是不同的概念是不同的概念:q字符字符1只是代表一个形状为只是代表一个形状为1的符号,的符号,在需要时按原样输出,在内存中以在需要时按原样输出,在内存中以ASCII码形码形式存储,占式存储,占1个字节个字节q整数整数1是以整数存储方式是以整数存储方式(二进制补码方式二进制补码方式)存存储的,占储的,占2个或个
47、或4个字节个字节字符型数据99.2.字符变量字符变量n用类型符用类型符char定义字符变量定义字符变量q char c=?;系统把系统把“?”的的ASCII代码代码63赋给变量赋给变量cqprintf(“%d%cn”,c,c);q输出结果是:输出结果是:63?字符型数据100.浮点型数据浮点型数据浮点型数据是用来表示具有小数点的实数浮点型数据是用来表示具有小数点的实数nfloat型型(单精度浮点型单精度浮点型)q编译系统为编译系统为float型变量分配型变量分配4个字节个字节q数值以规范化的二进制数指数形式存放数值以规范化的二进制数指数形式存放 101.浮点型数据是用来表示具有小数点的实数浮点
48、型数据是用来表示具有小数点的实数nfloat型型(单精度浮点型单精度浮点型)ndouble型型(双精度浮点型双精度浮点型)u编译系统为编译系统为double型变量分配型变量分配8个字节个字节u15位有效数字位有效数字浮点型数据102.几种基本数据类型类型 符号关键字数的表示范围所占位数整型字符型实型有无(signed)int32-21474836482147483647(signed)short16-3276832767(signed)long32-2147483648214748364732Unsignedint042949672953204294967295unsignedlongunsi
49、gnedshort16065535有float323.4e-383.4e38有double641.7e-3081.7e308有char8-128127无unsigned char80255说明:数据类型所占字节数随编译器不同而不同,上表以VC+6.0为例:103.举例:数据溢出(举例:数据溢出(Overflow)的危害)的危害n一台安装了Windows 95/98的机器,如果连续运行49.7天,可能死机n原因:qWindows自启动时刻起,有一个计数器,记录系统已经运行了多少毫秒。q这个计数器个unsigned longqunsigned long的最大值:4294967295q一天有24*6
50、0*60*1000=86400000毫秒q4294967295/86400000=49.71026961805q当49.7天的时候,此计数器会溢出,引起死机104.(一)常 量(二)变 量3.1.2 3.1.2 常量与变量常量与变量105.预备知识:预备知识:bit,Byte,Wordn bit,位位nByte,字节字节1 B=8 bnWord,字字1W=2Bn Kilobyte(KB),1 KB=1,024 Bn Megabyte(MB),1 MB=1,024 KBn Gigabyte(GB),1 GB=1,024 MBn Terabyte(TB)1 TB=1,024 GB 106.n一个字