C语言程序设计经典教程class1.ppt

上传人:sccc 文档编号:5378221 上传时间:2023-07-01 格式:PPT 页数:45 大小:395.01KB
返回 下载 相关 举报
C语言程序设计经典教程class1.ppt_第1页
第1页 / 共45页
C语言程序设计经典教程class1.ppt_第2页
第2页 / 共45页
C语言程序设计经典教程class1.ppt_第3页
第3页 / 共45页
C语言程序设计经典教程class1.ppt_第4页
第4页 / 共45页
C语言程序设计经典教程class1.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《C语言程序设计经典教程class1.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计经典教程class1.ppt(45页珍藏版)》请在三一办公上搜索。

1、C语言程序设计教程,关于本课程的教学安排,教学目的:通过对C语言的学习,掌握使用计算机编程语言解决实际问题的基本理论、方法、技巧、以及常用的算法。教学安排:理论教学36学时,实验教学20学时。参考书:C语言程序设计 谭浩强著 Thinking in C+机械工业出版社,第一章 C语言程序设计基础知识,1.1 基本知识1.2 算法及其表示1.3 C语言基本知识本章重点理解C程序的基本结构,第一章 C语言程序设计基础知识,1.1 基本知识 1.1.1 信息的表示 1.数制 十进制:日常使用的数制。二进制、八进制、十六进制:计算机中使用的数制。,不同数制间的转换:二、八、十六进制转换成十进制的方法是

2、-按位权法展开。例:二进制转换成八、十六进制的方法是-分组法(三位、四位一组)。例:八、十六进制转换成二进制的方法是-直接法(直接将八、十六进制数字符号转换 成二进制数字符号)。例:十进制转换成二、八、十六进制间的方法是-整数部分除法取余,小数部分乘法取整。例:,(101.01)2=1 22+0 21+1 20+0 2-1+1 2-2=(5.25)10 小数点位置(1a.2)16=1 161+10 160+2 16-1=(26.125)10 小数点位置,(1010111.011)2=(001 010 111.011)2=(127.3)8(1010111.011)2=(0101 0111.011

3、0)2=(57.6)16 转换时应注意:分别对整数和小数部分进行分组。整数部分:从小数点开始,向左三位(四位)一组,不够三位(四位)时,高位充零。小数部分:从小数点开始,向右三位(四位)一组,不够三位(四位)时,低位充零。最后将各组数据转换成相应数制的符号即可。,(a5)16=(1010 0101)2建议:二、八、十六进制间的转换应利用二进制作为过渡,这样做来得简单。例:求(a5)16的八进制表示。(a5)16=(1010 0101)2=(010 100 101)2=(245)8,2.0 最低位 14,28,2.0 7,2.1 3,2.1 1 最高位,0.125 2=0.25.0 最高位,0.

4、25 2=0.5.0,0.5 2=1.0.1 最低位,数据,数值数据:二进制,非数值数据:编码,定点法,浮点法,西文:ASCII,BCD,汉字:国标码,图形,有符定点,无符定点,2.数据的编码 通常在计算机中用8个、16个、32个.等固定个数的二进制位来表示某一个数据。计算机中常见的数据分为两种即数值数据和非数值数据。,数值型数据:通常在计算机中用8个、16个、32个二进制位来表示数值型数据。小数点的位置总是隐含的,以节省空间。但小数点的位置可以是固定的或可变的。前者称为定点数,后者称为浮点数。(1)定点数(在计算机中整数是按定点数格式存放的)定点数分为:有符定点数(signed)无符定点数(

5、unsigned)。浮点数(在计算机中小数是按浮点数格式存放的),浮点数(在计算机中小数是按浮点数格式存放的)浮点数格式如下:Js jn jn-1.j2 j1 ds dm dm-1.d2 d1 阶符 阶码 数符 尾数,字符型数据:常用的英文编码有ASCII码、BCD码 ASCII 码 ASCII码是英文American Standard Code for Information Interchange(美国信息交换标准编码)的缩写。该编码已经国际标准化组织所采纳。目前国际上流行的是ASCII编码的七位版本,即用一个字节的低七位表示一个字符,高位充零。七个二进制位可表示128种状态,故可用来表示

6、128个不同的字符,在ASCII编码的七位版本中表示的33个通用控制字符、95个可打印显示的字符(其中10个数字、52个大小写英文字母、33个标点符号和运算符号)。ASCII编码表(见附录I),字符型数据:常用的中文编码有国家标准汉字编码(GB码)GB2312-80(国家标准汉字编码)是常用的汉字编码标准,它收录了6763个常用汉字。国标码使用连续的两个字节(十六位二进制位)表示一个汉字。根据这些汉字使用频率的高低,分成两部分:一级汉字共3755个,即最常用的汉字。二级汉字共3008个,为次常用的汉字。GB2312-80还收录了一些数字符号、图形符号、外文字母等。,数值数据的编码方法:前面讨论

7、的是数值数据在计算机中的存放格式,下面讨论对数值数据进行编码的方法。原码表示法:(假定用八个二进制位表示)a=+51(a)2=(+00110011)2 则 a原=00110011 a=-127(a)2=(-01111111)2 则 a原=11111111 原码表示法在八个二进制位中的表示范围:-127a+127+0原=00000000-0原=10000000 要点:最高位作为符号位,若正数,则最高位是0,若负数,则最高位是1。,反码表示法:(假定用八个二进制位表示)通过一个二进制整数的原码得到所谓反码:当a为正数时,a 原=a 反,当a为负数时,则保持a 原的符号位不变,其余各个二进制位逐位取

8、反,即0变1,1变0。如:a=+51 a原=00110011 则 a 反=a 原=00110011 a=-51 a原=10110011 则 a反=11001100 反码表示法在八个二进制位中的表示范围:-127a+127+0反=00000000-0反=11111111 要点:由原码得到反码。若正数,则反码与原码相同,若负数,则最高位不变,其余逐位取反。,补码表示法:(假定用八个二进制位表示)通过一个二进制整数的反码得到所谓补码:当a0时,a 补=a 反,当a0时,则a 补=a 反+1,如:a=+51 a原=00110011 则 a补=a 反=a 原=00110011 a=-51 a原=1011

9、0011 a反=11001100 则 a补=a 反+1=11001101 补码表示法在八个二进制位中的表示范围:-128a+127+0补=00000000-128补=10000000 要点:由反码得到补码。若正数,则反码与补码相同,若负数,则补码等于反码加1。在补码表示法中,0的表示是唯一的,而最小值可达-128。,在上述介绍当中我们是以八位二进制位为例,同样,我们可以将其推广到十六位,三十二位等二进制位中去,需要注意的是数值范围将发生变化。思考:以上介绍的原码、反码、补码都是有符定点整数的编码方式,若以八位二进制位表示无符定点整数,则其范围是0到255。在Turbo C中:有符整数是按有符定

10、点整数格式的补码表示的,无符整数是按无符定点整数格式表示的。,补码的加、减法 补码的加法公式是:a 补+b 补=a+b 补 补码的减法公式是:a-b 补=a 补-b 补=a 补+-b 补 例1.1:a=1110=00001011原,b=510=00000101原,求a+b。因为a补=00001011,b 补=00000101 补码 a+b补=00010000补a+b反=00010000反 a+b原=00010000原=1610,例1.2:求b-a。-a=-1110=10001011原,b=510=00000101原,因为-a 补=11110101,b 补=00000101 补码b-a 补=b

11、补+-a 补=11111010补b-a 反=11111001反 b-a 原=10000110原=-610,关于字符编码方法:要注意ASCII码和国标码应用对象的不同,ASCII码用来对英文字符编码而国标码用来对汉字进行编码。ASCII码使用一个字节(八位二进制位),国标码使用两个字节(十六位二进制位)。GB2312-80规定了用连续的两个字节来表示一个汉字,并且只用各个字节的低7位,最高位未定义。这样以来就有可能与ASCII码字符产生冲突,就单个字节来说,两种编码方式都只用到字节的低七位,ASCII码规定高位充零,而国标码对高位未定义,因此,对单个字节而言,不能确定它到底是一个ASCII码字符

12、还是一个汉字的一部分(低字节或高字节)。于是有很多为了解决这类问题的方案应运而生,变形国标码就是其中之一,并且得到了广泛的应用。它的主要特点是将国标码编码的各个字节的最高位置1,以达到区别于ASCII编码的目的。,如何理解存储在计算机中的信息 计算机中各种信息都是以二进制形式存在,有的是数值,有的是ASCII码字符,有的是汉字,如何区分它们呢?这实际上取决于我们(或者程序)按照何种规则判读它们,例如:对于机器内存中连续两个字节,它们的低七位内容分别为0110000和0100001,如果它们的最高位均为1,则表示汉字“啊”,如果均为0则表示为两个ASCII码字符“0”和“!”。当然,我们还可根据

13、不同的数值编码规则将它们判读成不同的数值。,1.1.2计算机系统的基本组成 一个完整的计算机系统是由硬件系统和软件系统两大部分组成。硬件系统:是构成计算机系统的各种物理设备的总称,是计算机系统的物质基础,它由运算器、控制器、存储器、输入设备和输出设备组成;软件系统:是为运行、管理和维护计算机而编制的程序和各种文档的总和。,计算机系统,硬件系统,软件系统,主机,外设,系统软件,应用软件,中央处理器(CPU),内存储器,运算器(ALU),控制器(CU),只读存储器(ROM),随机存储器(RAM),外部存储器(辅助存储器),输入设备,输出设备,操作系统,编译系统,数据库管理系统,实用程序,专用应用软

14、件,通用应用软件,图1-4,1.硬件系统 计算机硬件主要由中央处理器、主存储器、辅助存储器、输入设备、输出设备等组成。(1)中央处理器(CPU)CPU的作用是不断的从内存中取指令并执行指令。CPU的指令控制部件负责解释并执行各条指令,在内部进行算术运算、逻辑运算,对外部按指令要求与内存、接口设备交换信息,协调整个计算机系统的工作。,(2)主存储器(Main Memory)主存储器又称为内存储器,简称内存,用来存放当前运行的程序和数据。根据其工作方式和读写功能的不同,内存可分为:只读存储器和随机存储器。只读存储器(ROM):ROM(Read Only Memory)随机存储器(RAM):RAM(

15、Random Access Memory)有以下两个特点:一是随机存取信息,二是具有“挥发性”。(3)辅助存储器(Auxiliary Memory)主存储器速度快但价格昂贵,因而容量受到限制,且断电后即“挥发”,所以计算机采用了大容量的辅助存储器,如磁带、磁盘、光盘等。辅助存储器只能与主存储器交换信息,是主存储器的扩充。它与主存储器一起构成计算机存储体系中的一个重要组成部分。,存储器容量单位 在存储器中,存储器最小单位是存储位(Bit),由若干个存储位组成一个存储单元,如八个二进制位组成一个字节存储单元(Byte),然后再由许多个存储单元组成存储器。为了区分不同的存储单元,必须将它们逐一编号,

16、该编号称为存储单元的地址。通过地址,可以访问各个存储单元。一个存储器中包含的存储单元的总数通常称为该存储器的存储容量。存储容量的换算关系如下:1Byte=8Bits1KB=1024Bytes=210Bytes 1MB=1024KB=220Bytes1GB=1024MB=230Bytes 1TB=1024GB=240Bytes,(4)输入/输出设备 输入设备是向计算机输入数据、信息的设备的总称。它将计算机程序、文本信息、多媒体信息以及各种数据转换成计算机能处理的数据形式并输送到计算机。常见的输入设备有键盘、鼠标、扫描仪等。输出设备是能将计算机处理好的信息转换成文本、图形、多媒体等形式并输出的设备

17、。常见的输出设备有显示器、打印机、绘图仪等。,2.软件系统 计算机只有配备了软件系统才能进行工作。一台计算机能否发挥其应有的作用,实现硬件系统所能完成的信息处理功能,取决于软件系统的优良与否。软件一般指计算机运行所需的各种程序、数据以及相关的文档。软件系统由系统软件和应用软件两大部分组成。系统软件是用来对计算机进行管理、控制和维护,以及支持应用程序的运行的软件的集合。应用软件是在系统软件的支持下为解决各类实际问题而设计开发的软件(程序)。,(1)系统软件 系统软件用于管理计算机资源,分配和协调计算机各部件工作,提高计算机的使用效率,方便用户使用计算机。系统软件包括以下四大类:操作系统:编译系统

18、:实用程序:数据库管理系统:,(2)应用软件 应用软件是用户或软件开发人员在系统软件的支持下,为解决各类实际问题而设计、开发的软件,它包括通用应用软件即软件包和专用应用软件即用户应用软件。通用应用软件是指由软件公司专业人员为解决通用性问题而设计的软件,以供用户选择实用。这类软件很多如:Office2000(办公自动化)、Access97(数据库)、SAS(统计分析系统)等。专用应用软件是指用户为了解决特定问题自己或委托他人研制开发的软件。如工资管理系统等。,需要注意的是:1)内存和外存在计算机系统中的作用,以及他们之间的关系。2)存储器的容量单位和地址的概念:存储器最小单位是存储位(Bit),

19、由若干个Bit成一个存储单元,如八个二进制位组成一个字节存储单元(Byte),然后再由许多个存储单元组成存储器。为了区分不同的存储单元,必须将它们逐一编号,该编号称为存储单元的地址。通过地址,可以访问各个存储单元。一个存储器中包含的存储单元的总数通常称为该存储器的存储容量。存储容量的换算关系如下:1Byte=8Bits1KB=1024Bytes=210Bytes 1MB=1024KB=220Bytes1GB=1024MB=230Bytes 1TB=1024GB=240Bytes,3.计算机语言 所谓计算机语言是人类为了有效地与计算机进行信息的传递、沟通,并且能让计算机按照人类的意志进行工作而开

20、发出的一种语言。人类使用它描述解决问题一系列步骤,计算机能够识别并执行它,以达到解决问题的目的。(1)机器语言(2)汇编语言(3)高级语言 在此,请注意,计算机只能识别并执行二进制机器指令的特点并被有改变。要想计算机执行汇编程序或者高级语言程序就必须将该程序“转换”(编译或解释)成机器指令程序,方可执行。,4.翻译方式 编译程序或解释程序对高级语言程序(或汇编语言程序)进行“翻译”处理,使它成为机器指令程序,才能提交计算机执行。其核心是将高级语言(或汇编语言)转换成“机器指令程序”。下面分别介绍这两种处理方式。(1)解释方式 使用解释程序(Interpreter)将高级语言程序的语句逐条“翻译

21、”成机器指令并逐条提交计算机执行,直至程序结束(如图1-5所示)。,(2)编译方式 所谓编译方式是分两步进行的首先通过编译程序(Compiler)对整个高级语言程序进行编译,它包括翻译和查错(词法分析、语法和语义分析、生成和优化目标程序)。出现错误时,停止编译,报告错误,不生成目标程序,待修改源程序后,再进行编译,直到最终得到正确的目标程序。然后使用链接程序(Linker)对目标程序进行链接,得到可执行的程序,这时才能将可执行程序提交计算机执行(如图1-6所示)Turbo c 是以编译方式进行工作的。,1.2算法及其表示1.2.1算法的概念和特点我们在使用计算机解决实际问题的时候,通常按如下步

22、骤进行:1.分析问题,找出解决问题的模型。2.根据模型,设计出适合计算机特点的处理方法即算法。3.选择适合的计算机语言,进行编程以实现算法。4.上机编辑、调试、运行所编制的程序,得到结果。5.对结果进行分析,整理出文字材料即文档。,一个合理的算法具有以下特点:1.有穷性:一个算法应该是“有限”个步骤的,而不能是“无限“个步骤的。也就是说经过有限个步骤的处理以后,算法应该结束。2.确定性:算法中的每一个步骤的含义都是确定的、唯一的,不能具有其他的含义或可被理解成其他的含义。3.有输入:可有零个或多个输入。输入是用来在一个算法的执行过程中,向它提供处理对象(数据)或控制算法执行过程的信息的。4.有

23、输出:可有一个或多个输出。它是算法执行的结果的输出。没有输出的算法是一个无效的算法。5.有效性:算法的每一步骤都可有效地执行。,1.2.2如何表示一个算法 表示一个算法的方法很多,如自然语言法、传统流程图法、N-S流程图法、伪代码法等,理论上都可用来表示算法,但是效率上有很大差异。例如:M=5!,要求M 的值。自然语言法描述算法如下:设定变量M,M置初值为1,设定变量I,置初值为1。如果I的值小于6,则执行,否则执行。将M乘以I并置于M中存放,将I中的值加1并置于I中存放,再执行。将M中的值输出。用传统流程图法描述算法如图1-7所示:用N-S流程图描述算法如图1-8所示:,结构化程序设计 人们

24、经过长期的实践,不断地总结经验,提出了结构化程序设计方法,将算法的描述归纳为三种基本结构的顺序组合,即顺序结构、选择结构、循环结构。它们的共同特点是:只有一个入口,只有一个出口,每个基本结构中的每一部分都有机会被执行,结构内部不存在死循环。使用三种基本结构描述的算法是结构化的算法,按照结构化算法编写出来的程序具有良好的可读性和可维护性。需要说明的是传统流程图使用几何图形、流程线、文字说明(见表1-1)来描述一个算法,美国学者I.Nassi和B.Shneidermen提出了用N-S流程图又称盒图(三种基本结构对照表见表1-2)描述算法的方法。,1.3 C语言基本知识1.3.1 C语言的发展历史及

25、特点 1.C语言程序结构紧凑、语言简洁。2.C语言的数据类型丰富。3.C语言的运算符丰富,有多达44种运算符,(见附录III)。4.C语言是一种结构化程序设计语言。5.C语言是处于汇编语言和高级语言之间的程序设计语言,即中级语言。6.C语言可移植性好 7.C语言的语法限制不太严格。,1.3.2 C语言的标识符与关键字 在C语言程序中,标识符和关键字都属于程序的基本语法单位。正确地使用标识符和关键字对于程序的编制是至关重要的。1.标识符 标识符一般是指用户或系统定义的符号名、变量名、数组名、类型名、函数名、文件名等。C语言规定标识符由字母、数字、下划线组成,必须以字母或下划线开头。大写字母小写字

26、母被认为是不同的字符,在标识符中不能含有其它字符,也不能跨行书写。例如,合法的标识符如下:a_1 name _x123 worker World_1 _Wolf 非法的标识符如下:1abc name,1 x 123n&a12 To-me date.1Turbo C规定标识符长度不超过32个字符,超过32个字符的部分无效。,用户在定义标识符的时候应注意:不要与系统预定义的标识符或关键字相同。如:用户不要定义printf作为用户标识符,因为系统已经将其预先定义为格式输出函数的标识符,以免引起冲突。尽可能直观地定义标识符,也就是说,从所定义的标识符的字面上就能够了解其含义,以方便以后的使用。,2.关

27、键字 C语言中的关键字又称保留字,它是由C的编译程序预定义的、具有特定含义的单词,用户不可将其定义成自己的标识符使用。C的关键字有以下32个:auto break case char const continue default do double elseenum cxtern float for gotoif int long register returnshort signed sizeof static structswitch typedef union unsigned voidvolatile while,1.3.3 C语言的基本结构 1.C 语言程序由一个或多个函数组成,其中

28、有且只有一个主函数,名为main()。2.函数由函数说明和函数体组成。其中函数名命名应符合标识符的规定,函数体应以花括弧“”开始,并以“”结束。3.函数体由C语言的“语句”组成,每条语句必须以“;”结尾。4.C语言程序的语句书写格式自由,一行内可以写一条或多条语句,也可将一条语句 写在多行上,但关键字、标识符、字符串作为一个整体不能分写在两行上。5.在C语言程序中,可以在任何位置成对地使用/*和*/对程序进行注释,注释的作用是利用文字信息对程序进行说明或注解,以便人们在阅读程序时理解程序的功能,注释部分在程序的运行时不执行。例1.3,在屏幕上显示“Hello,C!”字符串。main()/*主函数*/*函数体开始*/printf(Hello,C!);/*在屏幕上显示字符串*/*函数体结束*/,main()/*主函数*/*主函数体开始*/int a,b,c;/*定义三个整型变量名*/printf(“Hello,C!”);/*屏幕输出字符串*/scanf(“%d%d”,/*将y的值返回*/*用户自定义函数的函数体结束*/,加强对C语言程序基本结构的理解,对今后的学习会有很大帮助。建议:除了注意对书本知识的学习以外,要多观察、多思考、多做自己的“作品”(不在于复杂程度,只要是自己的)、多做上机练习,坚持一段时间,培养起自己的兴趣,有了兴趣就意味着成功的开始。,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号