版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020/7/10,1,C语言程序设计教程,2020/7/10,2,关于本课程的教学安排,本课程的教学目的:通过对C语言的学习,掌握使用计算机编程语言解决实际问题的基本理论、方法、技巧、以及常用的算法。 本课程的教学安排:理论教学38学时,实验教学22学时。 参考书: C语言程序设计 谭浩强著 Thinking in C+ 机械工业出版社 Computer Concepts 4th edtion 机械工业出版社,2020/7/10,3,Lets continue ourC language journey !,2020/7/10,4,The strategy of learning C is
2、a step-by-step approach, firstlaying a sound foundation on programming concepts, flow of control, and functions. The fundamentals of C programming is a stepping stone that will prepare you to embark on the journey of learning C+ and JAVA.,2020/7/10,5,You will begin to learn how to write simple C pro
3、grams with primitive data types, control statements, functions, and arrays. Programming Exercises at the end of each chapter provide you with opportunities to apply the skills on your own.,2020/7/10,6,The trick of learning programming is practice, practice, and practice.,2020/7/10,7,第一章 C语言程序设计基础知识,
4、1.1 概述 1.1.1 信息的表示 1. 数制 十进制: 日常使用的数制。 二进制、八进制、十六进制: 计算机中使用的数制。,2020/7/10,8,不同数制间的转换: 二、八、十六进制转换成十进制的方法是 -按位权法展开。例: 二进制转换成八、十六进制的方法是 -分组法(三位、四位一组)。例: 八、十六进制转换成二进制的方法是 -直接法(直接将八、十六进制数字符号转换 成二进制数字符号)。 例: 十进制转换成二、八、十六进制间的方法是 -整数部分除法取余,小数部分乘法取整。例:,(101.01)2=1 22+0 21+1 20+0 2-1+1 2-2 =(5.25)10 小数点位置 (1a
5、.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.0110 )2 =(57.6)16 转换时应注意: 分别对整数和小数部分进行分组。 整数部分:从小数点开始,向左三位(四位)一组,不够三位(四位)时,高位充零。 小数部分:从小数点开始,向右三位(四位)一组,不够三位(四位)时,低位充零。最后将各组数据转换成相应数制的符号即可。,(a5)16=(1010 0101 )2 建议:二、八、十六进制间的转换应利用二进制作为过
6、渡,这样做来得简单。 例:求(a5)16的八进制表示。 (a5)16=(1010 0101 )2=(010 100 101 )2=(245 )8,0.125 2=0.25.0 最高位,2020/7/10,9,2 .0 最低位 14,28,2 .0 7,2 .1 3,2 .1 1 最高位,0.125 2=0.25.0 最高位,0.25 2=0.5 .0,0.5 2=1.0 .1 最低位,2020/7/10,10,数据,数值数据:二进制,非数值数据:编码,定点法,浮点法,西文:ASCII,BCD,汉字:国标码,图形,有符定点,无符定点,2. 数据的编码 通常在计算机中用8个、16个、32个.等固定
7、个数的二进制位来表示某一个数据。 计算机中常见的数据分为两种即数值数据和非数值数据。,2020/7/10,11,数值型数据: 通常在计算机中用8个、16个、32个二进制位来表示数值型数据。小数点的位置总是隐含的,以节省空间。但小数点的位置可以是固定的或可变的。前者称为定点数,后者称为浮点数。 (1)定点数(在计算机中整数是按定点数格式存放的) 定点数分为: 有符定点数(signed) 无符定点数(unsigned)。 浮点数(在计算机中小数是按浮点数格式存放的),2020/7/10,12,2020/7/10,13,浮点数(在计算机中小数是按浮点数格式存放的) 浮点数格式如下: Js jn jn
8、-1. j2 j1 ds dm dm-1 .d2 d1 阶符 阶码 数符 尾数,2020/7/10,14,字符型数据: 常用的英文编码有ASCII码、BCD码 ASCII 码 ASCII码是英文American Standard Code for Information Interchange(美国信息交换标准编码)的缩写。 该编码已经国际标准化组织所采纳。 目前国际上流行的是ASCII编码的七位版本,即用一个字节的低七位表示一个字符,高位充零。 七个二进制位可表示128种状态,故可用来表示128个不同的字符,在ASCII编码的七位版本中表示的33个通用控制字符、95个可打印显示的字符(其中1
9、0个数字、52个大小写英文字母、33个标点符号和运算符号)。ASCII编码表(见附录I),2020/7/10,15,字符型数据: 常用的中文编码有国家标准汉字编码(GB码) GB2312-80(国家标准汉字编码)是常用的汉字编码标准,它收录了6763个常用汉字。国标码使用连续的两个字节(十六位二进制位)表示一个汉字。 根据这些汉 字 使用频率的高低,分成两部分: 一级汉字共 37 55个,即最常用的汉字。 二级汉字共3008个,为次常用的汉字。 GB2312-80还收录了一些数字符号、图形符号、外文字母等。,2020/7/10,16,数值数据的编码方法: 前面讨论的是数值数据在计算机中的存放格
10、式,下面讨论对数值数据进行编码的方法。 原码表示法:(假定用八个二进制位表示) a=+51 (a)2=(+00110011)2 则 a原=00110011 a=-127 (a)2=(-01111111)2 则 a原=11111111 原码表示法在八个二进制位中的表示范围: -127a+127 +0原=00000000 -0原=10000000 要点: 最高位作为符号位,若正数,则最高位是0,若负数,则最高位是1。,2020/7/10,17,反码表示法:(假定用八个二进制位表示) 通过一个二进制整数的原码得到所谓反码:当a为正数时,a 原=a 反 ,当a为负数时,则保持a 原的符号位不变,其余各
11、个二进制位逐位取反,即0变1,1变0。如: a=+51 a原=00110011 则 a 反 = a 原=00110011 a=-51 a原=10110011 则 a反=11001100 反码表示法在八个二进制位中的表示范围: -127a+127 +0反=00000000 -0反=11111111 要点: 由原码得到反码。若正数,则反码与原码相同,若负数,则最高位不变,其余逐位取反。,2020/7/10,18,补码表示法:(假定用八个二进制位表示) 通过一个二进制整数的反码得到所谓补码:当a0时,a 补=a 反 ,当a0时,则a 补=a 反+1,如: a=+51 a原=00110011 则 a补
12、= a 反 = a 原=00110011 a=-51 a原=10110011 a反=11001100 则 a补=a 反+1 =11001101 补码表示法在八个二进制位中的表示范围: -128a+127 +0补=00000000 -128补=10000000 要点: 由反码得到补码。若正数,则反码与补码相同,若负数,则补码等于反码加1。 在补码表示法中,0的表示是唯一的,而最小值可达-128。,2020/7/10,19,在上述介绍当中我们是以八位二进制位为例,同样,我们可以将其推广到十六位,三十二位等二进制位中去,需要注意的是数值范围将发生变化。 思考:以上介绍的原码、反码 、补码都是有符定点
13、整数的编码方式 ,若以八位二进制位表示无符定点整数,则其范围是0到255。 在Turbo C中: 有符整数是按有符定点整数格式的补码表示的, 无符整数是按无符定点整数格式表示的。,2020/7/10,20,补码的加、减法 补码的加法公式是: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,2020/7/10
14、,21,一、负整数的原码与补码的快速转换:从左到右; 见0不变、见第一个1也不变;其余位依次取反;最高位不变 二、整数的原、反、补码相同。,2020/7/10,22,例1.2:-a=-1110=10001011原,b=510=00000101原,求b-a。 因为-a 补=11110101, b 补=00000101 补码 b-a 补=b 补+-a 补=11111010补 b-a 反=11111001反 b-a 原=10000110原=-610,2020/7/10,23,关于字符编码方法: 要注意ASCII码和国标码应用对象的不同,ASCII码用来对英文字符编码而国标码用来对汉字进行编码。ASC
15、II码使用一个字节(八位二进制位),国标码使用两个字节(十六位二进制位)。 GB2312-80规定了用连续的两个字节来表示一个汉字,并且只用各个字节的低7位,最高位未定义。这样以来就有可能与ASCII码字符产生冲突,就单个字节来说,两种编码方式都只用到字节的低七位,ASCII码规定高位充零,而国标码对高位未定义,因此,对单个字节而言,不能确定它到底是一个ASCII码字符还是一个汉字的一部分(低字节或高字节)。于是有很多为了解决这类问题的方案应运而生,变形国标码就是其中之一,并且得到了广泛的应用。它的主要特点是将国标码编码的各个字节的最高位置1,以达到区别于ASCII编码的目的。,2020/7/
16、10,24,如何理解存储在计算机中的信息 计算机中各种信息都是以二进制形式存在,有的是数值,有的是ASCII码字符,有的是汉字,如何区分它们呢?这实际上取决于我们(或者程序)按照何种规则判读它们,例如:对于机器内存中连续两个字节,它们的低七位内容分别为0110000和0100001,如果它们的最高位均为1,则表示汉字“啊”,如果均为0则表示为两个ASCII码字符“0”和“!”。当然,我们还可根据不同的数值编码规则将它们判读成不同的数值。,2020/7/10,25,1.1.2计算机系统的基本组成 一个完整的计算机系统是由硬件系统和软件系统两大部分组成。 硬件系统:是构成计算机系统的各种物理设备的
17、总称,是计算机系统的物质基础,它由运算器、控制器、存储器、输入设备和输出设备组成; 软件系统:是为运行、管理和维护计算机而编制的程序和各种文档的总和。,2020/7/10,26,计算机系统,硬件系统,软件系统,主机,外设,系统软件,应用软件,中央处理器(CPU),内存储器,运算器(ALU),控制器(CU),只读存储器(ROM),随机存储器(RAM),外部存储器(辅助存储器),输入设备,输出设备,操作系统,编译系统,数据库管理系统,实用程序,专用应用软件,通用应用软件,图1-4,2020/7/10,27,1. 硬件系统 计算机硬件主要由中央处理器、主存储器、辅助存储器、输入设备、输出设备等组成。
18、 (1)中央处理器(CPU) CPU的作用是不断的从内存中取指令并执行指令。CPU的指令控制部件负责解释并执行各条指令,在内部进行算术运算、逻辑运算,对外部按指令要求与内存、接口设备交换信息,协调整个计算机系统的工作。,2020/7/10,28,(2)主存储器(Main Memory) 主存储器又称为内存储器,简称内存,用来存放当前运行的程序和数据。根据其工作方式和读写功能的不同,内存可分为:只读存储器和随机存储器。 只读存储器(ROM):ROM(Read Only Memory) 随机存储器(RAM):RAM(Random Access Memory) 有以下两个特点: 一是随机存取信息,二
19、是具有“挥发性” 。 (3)辅助存储器(Auxiliary Memory) 主存储器速度快但价格昂贵,因而容量受到限制,且断电后即“挥发”,所以计算机采用了大容量的辅助存储器,如磁带、磁盘、光盘等。辅助存储器只能与主存储器交换信息,是主存储器的扩充。它与主存储器一起构成计算机存储体系中的一个重要组成部分。,2020/7/10,29,存储器容量单位 在存储器中,存储器最小单位是存储位(Bit),由若干个存储位组成一个存储单元,如八个二进制位组成一个字节存储单元(Byte),然后再由许多个存储单元组成存储器。 为了区分不同的存储单元,必须将它们逐一编号,该编号称为存储单元的地址。通过地址,可以访问
20、各个存储单元。 一个存储器中包含的存储单元的总数通常称为该存储器的存储容量。存储容量的换算关系如下: 1Byte=8Bits 1KB=1024Bytes=210Bytes 1MB=1024KB=220Bytes 1GB=1024MB=230Bytes 1TB=1024GB=240Bytes,2020/7/10,30,(4)输入/输出设备 输入设备是向计算机输入数据、信息的设备的总称。它将计算机程序、文本信息、多媒体信息以及各种数据转换成计算机能处理的数据形式并输送到计算机。常见的输入设备有键盘、鼠标、扫描仪等。输出设备是能将计算机处理好的信息转换成文本、图形、多媒体等形式并输出的设备。常见的输
21、出设备有显示器、打印机、绘图仪等。,2020/7/10,31,2. 软件系统 计算机只有配备了软件系统才能进行工作。一台计算机能否发挥其应有的作用,实现硬件系统所能完成的信息处理功能,取决于软件系统的优良与否。 软件一般指计算机运行所需的各种程序、数据以及相关的文档。软件系统由系统软件和应用软件两大部分组成。系统软件是用来对计算机进行管理、控制和维护,以及支持应用程序的运行的软件的集合。应用软件是在系统软件的支持下为解决各类实际问题而设计开发的软件(程序)。,2020/7/10,32,(1)系统软件 系统软件用于管理计算机资源,分配和协调计算机各部件工作,提高计算机的使用效率,方便用户使用计算
22、机。系统软件包括以下四大类: 操作系统: 编译系统: 实用程序: 数据库管理系统:,2020/7/10,33,(2)应用软件 应用软件是用户或软件开发人员在系统软件的支持下,为解决各类实际问题而设计、开发的软件,它包括通用应用软件即软件包和专用应用软件即用户应用软件。通用应用软件是指由软件公司专业人员为解决通用性问题而设计的软件,以供用户选择实用。这类软件很多如:Office2000(办公自动化)、Access97(数据库)、SAS(统计分析系统)等。专用应用软件是指用户为了解决特定问题自己或委托他人研制开发的软件。如工资管理系统等。,2020/7/10,34,需要注意的是: 1)内存和外存在
23、计算机系统中的作用,以及他们之间的关系。 2)存储器的容量单位和地址的概念:存储器最小单位是存储位(Bit),由若干个Bit成一个存储单元,如八个二进制位组成一个字节存储单元(Byte),然后再由许多个存储单元组成存储器。 为了区分不同的存储单元,必须将它们逐一编号,该编号称为存储单元的地址。通过地址,可以访问各个存储单元。 一个存储器中包含的存储单元的总数通常称为该存储器的存储容量。存储容量的换算关系如下: 1Byte=8Bits 1KB=1024Bytes=210Bytes 1MB=1024KB=220Bytes 1GB=1024MB=230Bytes 1TB=1024GB=240Byte
24、s,2020/7/10,35,3. 计算机语言 所谓计算机语言是人类为了有效地与计算机进行信息的传递、沟通,并且能让计算机按照人类的意志进行工作而开发出的一种语言。人类使用它描述解决问题一系列步骤,计算机能够识别并执行它,以达到解决问题的目的。 (1)机器语言 (2)汇编语言 (3)高级语言 在此,请注意,计算机只能识别并执行二进制机器指令的特点并被有改变。要想计算机执行汇编程序或者高级语言程序就必须将该程序“转换”(编译或解释)成机器指令程序,方可执行。,2020/7/10,36,4. 翻译方式 编译程序或解释程序对高级语言程序(或汇编语言程序)进行“翻译”处理,使它成为机器指令程序,才能提
25、交计算机执行。 其核心是将高级语言(或汇编语言)转换成“机器指令程序”。下面分别介绍这两种处理方式。 (1)解释方式 使用解释程序(Interpreter)将高级语言程序的语句逐条“翻译”成机器指令并逐条提交计算机执行,直至程序结束(如图1-5所示) 。,2020/7/10,37,(2)编译方式 所谓编译方式是分两步进行的首先通过编译程序(Compiler)对整个高级语言程序进行编译,它包括翻译和查错(词法分析、语法和语义分析、生成和优化目标程序)。出现错误时,停止编译,报告错误,不生成目标程序,待修改源程序后,再进行编译,直到最终得到正确的目标程序。然后使用链接程序(Linker)对目标程序
26、进行链接,得到可执行的程序,这时才能将可执行程序提交计算机执行(如图1-6所示) Turbo c 是以编译方式进行工作的。,2020/7/10,38,1.2算法及其表示 1.2.1算法的概念和特点 我们在使用计算机解决实际问题的时候,通常按如下步骤进行: 1. 分析问题,找出解决问题的模型。 2. 根据模型,设计出适合计算机特点的处理方法即算法。 3. 选择适合的计算机语言,进行编程以实现算法。 4. 上机编辑、调试、运行所编制的程序,得到结果。 5. 对结果进行分析,整理出文字材料即文档。,2020/7/10,39,一个合理的算法具有以下特点: 1. 有穷性:一个算法应该是“有限”个步骤的,
27、而不能是“无限“个步骤的。也就是说经过有限个步骤的处理以后,算法应该结束。 2. 确定性:算法中的每一个步骤的含义都是确定的、唯一的,不能具有其他的含义或可被理解成其他的含义。 3. 有输入:可有零个或多个输入。输入是用来在一个算法的执行过程中,向它提供处理对象(数据)或控制算法执行过程的信息的。 4. 有输出:可有一个或多个输出。它是算法执行的结果的输出。没有输出的算法是一个无效的算法。 5. 有效性:算法的每一步骤都可有效地执行。,2020/7/10,40,1.2.2如何表示一个算法 表示一个算法的方法很多,如自然语言法、传统流程图法、N-S流程图法、伪代码法等,理论上都可用来表示算法,但
28、是效率上有很大差异。 例如:M=5!,要求M 的值。 自然语言法描述算法如下: 设定变量M,M置初值为1,设定变量I,置初值为1。 如果I的值小于6,则执行,否则执行。 将M乘以I并置于M中存放,将I中的值加1并置于I中存放,再执行。 将M中的值输出。 用传统流程图法描述算法如图1-7所示: 用N-S流程图描述算法如图1-8所示:,2020/7/10,41,结构化程序设计 人们经过长期的实践,不断地总结经验,提出了结构化程序设计方法,将算法的描述归纳为三种基本结构的顺序组合,即顺序结构、选择结构、循环结构。 它们的共同特点是:只有一个入口,只有一个出口,每个基本结构中的每一部分都有机会被执行,结构内部不存在死循环。 使用三种基本结构描述的算法是结构化的算法,按照结构化算法编写出来的程序具有良好的可读性和可维护性。 需要说明的是传
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 取水权转让协议
- 室内墙面施工技师考试试卷及答案
- 葛洲坝贸易战略框架协议书
- 电信靓号协议书文本
- JAVA课程设计教材订购系统
- 疫情防控租赁宾馆协议书
- 夫妻两人工作协议书
- 搭建阁楼安全协议书范本
- 韵达快递合伙商家协议书
- 烈士墓维护修缮协议书
- 加油站节日前安全教育
- 《机械产品三维创新设计(Creo)》高职Creo软件学习全套教学课件
- 配电箱采购合同协议书详细
- CJ/T 188-2018户用计量仪表数据传输技术条件
- 木头购卖合同协议
- 预防艾梅乙母婴传播知识
- 门诊护理查对制度
- 萤石矿选矿厂安全设施设计
- 2024年江苏高考地理试卷试题真题及答案详解(精校打印版)
- DL-T5796-2019水电工程边坡安全监测技术规范
- 项目工程实体质量(路基、路面工程)检查表
评论
0/150
提交评论