C程序设计概述课件全套教学教程整套电子教案电子讲义.ppt
《C程序设计概述课件全套教学教程整套电子教案电子讲义.ppt》由会员分享,可在线阅读,更多相关《C程序设计概述课件全套教学教程整套电子教案电子讲义.ppt(696页珍藏版)》请在咨信网上搜索。
,第,1,章,C,程序设计概述,*,第,2,章 数据类型与常用库函数,*,第3章 运算符与表达式,*,第,4,章 算法与控制结构,*,第,5,章 数组、字符串、指针,*,第,6,章 函数,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,7,章 编译预处理,*,第,8,章 结构体、共用体与枚举类型,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,9,章 文件操作,*,第,11,章,C+,简介,*,第,10,章,C+,程序设计初步,第,11,章,C+,简介,*,第,10,章,C+,程序设计初步,本章要求:,理解程序设计的基本概念和程序的执行过程,了解,C,语言的特点,掌握,C,语言中标识符的命名规则,掌握,C,语言程序的基本组成结构,理解算法及算法的表示,掌握开发和运行一个,C,语言程序的过程,本章难点:,正确使用,C,语言中的标识符,本章重点:,C,程序的基本组成结构,标识符的命名规则,第,1,章,C,程序设计概述,第,1,章,C,程序设计概述,1.1,计算机,程序设计概述,1.2,语言简介,1.3 C,语言的程序结构,1.4,算法及算法的表示,1.5,运行一个,C,程序,1.1,计算机,程序设计概述,1.1.1,程序与程序设计语言,1,程序,什么是程序?广义地讲,程序就是为完成某一任务而制定的一组操作步骤。按该操作步骤执行,就完成程序所规定的任务。,2,程序设计语言,人和计算机交流信息使用的语言称为计算机语言或称程序设计语言,1.1,计算机,程序设计概述,1.1.1,程序与程序设计语言,(,1,),机器语言,(Machine Language),(,2,)汇编语言,(Assemble Language),汇编语言程序的执行过程,汇编语言和机器语言,都是面向机器的程序设计语言,,一般称为,低级语言。,1.1,计算机,程序设计概述,1.1.1,程序设计语言的发展,(,3,)高级语言,(High Level Language),高级语言是一种与硬件结构及指令系统无关,表达方式比较接近自然语言和数学表达式的一种计算机程序设计语言。,优点:,描述问题能力强,通用性、可读性、可维护性都较好,缺点:,执行速度较慢,编制访问硬件资源的系统软件较难。,用高级语言编写的程序称为,“,源程序,”,,计算机不能直接识别和执行,高级语言程序有,编译,和,解释,两种执行方式。,1.1,计算机,程序设计概述,高级语言程序的,编译执行,:,是将,源程序,整个编译成,等价的,独立的目标程序,,然后通过链接程序将目标程序链接成,可执行程序,。,高级语言编译执行过程,1.1,计算机,程序设计概述,高级语言程序的,解释,执行,:,解释,方式是将源程序,逐句翻译,翻译一句执行一句,边翻译边执行,,,不产生目标程序。整个执行过程,,解释程序都一直在内存中,。,高级语言,解释,执行过程,1.1,计算机,程序设计概述,1.1.2,程序设计方法概述,程序设计方法的发展可以划分以下三个阶段:,1,早期的程序设计,2,结构化程序设计,3,面向对象的程序设计,1.2,语言简介,1.2.1,语言的发展,语言是在,70,年代初问世的。,1973,年由美国电话电报公司,(AT&T),贝尔实验室正式发表了语言。,同时由,B.W.Kernighan,和,D.M.Ritchie,合著了著名的,“,The C Programming Language”,一书。,1.2,语言简介,1.2.1,语言的发展,60,年,ALGOL,语言,63,年,CPL,67,年,BCPL,70,年,B,语言,73,年,C,语言,90,年,Borland,公司推出,BC+,92,年,Microsoft,公司推出,MS C+,93,年,Microsoft,公司推出,VC+,83,年 制定了,ANSI C,85,年,AT&T,公司推出,C+,1.2,语言简介,1.2.2 C,语言的特点,语言简洁、紧凑、使用方便、灵活,VB,语言,Dim a As Integer,Dim b As Integer,if(,表达式),then,语句,End if,C,语言,int a,,,b;,if(,表达式)语句,;,2.,丰富的运算符,和数据类型,1.2.2 C,语言的特点,4.,C,语法限制不太严格、程序设计自由度大,一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而,C,语言允许程序编写者有较大的自由度。,3.,语言是一种结构化语言,它层次清晰,便于按模块化方式组织程序,易于调试和维护。,5.,直接访问内存的物理地址,由于,能进行位,(bit),一级的操作,。实现了对硬件的编程操作,因此语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。,1.2.2 C,语言的特点,6.,语言还具有效率高,可移植性强等特点,一般只比汇编程序生成的目标代码效率低,10%,20%,。,7,C,语言适用范围大,C,语言还有一个突出的优点就是适合于多种操作系统,如,DOS,、,UNIX,,也适用于多种机型。,C,语言程既适合编写大型的系统软件,也适合编写应用软件。,1.2.3,语言的字符集,字符是组成语言的最基本的元素。语言字符集由字母,数字,空格,标点和特殊字符组成。,(,1,)字母,小写字母,a,z,共,26,个,大写字母,A,Z,共,26,个(,C,语言中区分字母大小写),(,2,)数字,0,9,共,10,个,(,3,)空白符,空格符、制表符、换行符等统称为空白符。空白符只在字符、常量和字符串常量中起作用。在其它地方出现时,只起间隔作用。,(,4,)标点和特殊字符,C,语言编程中可以使用的标点和特殊字符共有,30,个,如下表,1.2.3,语言的字符集,(,4,)标点和特殊字符,1.2.4,语言标识符,1,保留字符,C,语言的保留字符(也称关键字)共有,32,个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。,(,1,)数据类型关键字(,12,个),:,char,double,enum,float,int,long,short,signed,struct,union,unsigned,void,(,2,)控制语句关键字(,12,个),:,break,case,continue,default,do,else,for,goto,if,return,switch,while,(,3,)存储类型关键字(,4,个),:,auto,extern,register,static,(,4,)其它关键字(,4,个),:,const,sizeof,typedef,volatile,2,预定义标识符,C,语言中除了上述保留字符外,还有一类具有特殊含义的标识符,它们被,C,系统用作库函数名、预编译命令,这类标识符称为系统预定义标识符。例如:,系统库函数:,如,sin,,,printf,,,scanf,等,预编译命令:,如,define,,,include,,,undef,,,ifdef,,,endif,等,一般来说,用户在编写,C,程序时,不要把这些标识再定义为其它用途的标识符(用户自定义标识符)。,1.2.4,语言标识符,3,用户定自义标识符,用户自定义标识符是用户根据编程的需要而定义的标识符,用于,标识变量、符号常量、用户自定义函数、类型名,等。,C,规定,,标识符只能是字母(,A,Z,,,a,z,)、数字(,0,9,)、下划线(,_,)组成的字符串,并且其第一个字符必须是字母或下划线。,例如,以下标识符是合法的:,a,,,x,,,x3,,,BOOK1,,,sum5,,,mysin,以下标识符是非法的:,3s,以数字开头,s*T,出现非法字符,*,-3x,以减号开头,bowy-1,出现非法字符,-(,减号,),1.2.4,语言标识符,使用自定义标识符的几点说明:,(,1,)标准,C,不限制,标识符的长度,,但它受各种版本的,C,语言编译系统限制,同时也受到具体机器的限制。,(,2,)标识符中,,大小写是有区别的,。,(,3,)标识符虽然可由程序员随意定义,建议命名应尽量有相应的意义,以便阅读理解,作到,“,顾名思义,”,。,例如:可用,sum,表示求和的量,,name,表示姓名等。,(,4,),不使用,C,语言的关键字,:类型说明符、语句定义符、预处理命令。,(,5,),标识符不能和用户已编制的函数或,C,语言库函数,同名,。否则程序中调用库函数就会出错。,1.2.4,语言标识符,1.3 C,语言的程序结构,1.3.1,几个简单的,C,程序实例,例,1-1,在屏幕输出一行文字信息。,具体程序如下:,#include,void main(),printf(Hello C!n);,其执行结果是在屏幕上输出一行信息:,Hello C!,头包含文件,程序开始,程序结束,打印输出函数,主函数,输出内容,1.3.1,几个简单的,C,程序实例,例,1-2,输入,2,个数据,计算它们的和,并打印输出在屏幕上。,程序运行结果如下:,void main(),int a,b,s;,/,定义变量,printf(Enter two number a,b=?n);,scanf(%d%d,/,调用标准函数,要求用户输入,2,个数据,s=a+b;,printf(s=%dn,s);,1.3.1,几个简单的,C,程序实例,例,1-3,将例,1-2,中的求,2,个数的和编写成独立的函数,在主函数中调用实现。,#include,void main(),/,主函数,int fsum(int,int);,/,用户自定义函数声明,int a,b,t;,/,定义,a,b,t,为整型变量,printf(Enter two number a,b=?n);,scanf(%d%d,/,输入变量,a,和,b,值,t=fsum(a,b);,/,调用函数,fsum,,结果返回赋值给,t,printf(%d+%d=%dn,a,b,t);,/,打印输出,int fsum(int x,int y),/,定义函数,fsum,int,指定该函数返回一个整数,int z;,z=x+y;,return(z);,/,返回变量,z,的值,程序执行的结果如下:,1.3.2 C,程序的结构特点,C,程序,函数组成,由若干,函数说明部分,函数体,函数类型说明,函数名,函数形参,形参类型说明,变量定义部分,执行部分,int,fsum,(int x,int y),例如:,(函数首部),1.3 C,语言的程序结构,1.3 C,语言的程序结构,C,程序的基本结构的,特点,:,(,1,),C,程序为函数模块结构,,C,程序由,一个或多个函数,构成,其中必须,且,只能,有,一个主函数,main(),。,(,2,),C,程序从,main(),函数,开始执行,在,main(),中结束,。,(,3,),C,程序的函数是系统提供的标准函数(如,printf,、,scanf,等)和用户自己定义的函数(如,prn,、,fsum,等)。,(,4,)每一个说明,每一个语句都,必须以分号结尾,。但预处理命令,,函数头和最后一个花括号,“,”,之后不能加分号,。,(,5,),C,语言的注释符是以,“,/,”,开头并以,“”,结尾,的串。在,“,/,”,和“”之间的即为注释,。,在,TC+,中,注释符以,“,/,”,开始,到本行结束。,例如:,int a,b;/,定义,2,个整型变量,1.3 C,语言的程序结构,1.3.3 C,函数的结构,函数是语言程序的基本单位。,任何函数(包括主函数,main(),)都是由函数说明和函数体两部分组成,,其一般结构如下:,函数类型,函数名,(,形式参数说明,),数据说明部分;,语句部分;,例:,int fsum(int x,int y),int z;,z=x+y;,return(z);/,返回变量,z,的值,1.3 C,语言的程序结构,1.3.4 C,程序,的书写,风格,(,1,),一个说明或一个语句占一行,(,2,)函数与函数之间,加空行,以清楚的分出程序中有几个函数。,(,3,)用,括起来,的部分,通常表示了程序的某一层次结构。,一般与该结构语句的第一个字母对齐,并单独占一行。,(,4,)低一层次的语句或说明可比高一层次的语句或说明,缩进若干格,后书写,同一个层次的语句左对齐。,(,5,)对数据的输入,运行时最好要出现,输入提示,,对于数据输出,也要有一定的提示和格式。,(,6,),程序中适当加上一些注释,。,1.4,算法及算法的表示,1.4.1,算法概述,广义:,算法是为完成一项任务所应当遵照的一步一步的规则的、精确的、无歧义的描述,它的总步数是有限的。,狭义:,算法是解决一个问题采取的方法和步骤的描述,算法概念,例,1-4,输入三个数,然后输出其中最大的数。,算法可以写成:,(1),输入,A,,,B,,,C,。,(2),若,AB,,则,MAX A,;,否则,:MAXB,。,(3),若,CMAX,,则,MAX C,。,(4),输出,MAX,,,MAX,即为最大数。,1.4,算法及算法的表示,例,1-5,.,输入,10,个数,打印输出其中最大的数。,算法设计如下:,(,1,)输入,1,个数,存入变量,A,中,将记录数据个数的变量,N,赋值为,1,(,2,)将,A,存入表示最大值的变量,Max,中,即,Max=A,(,3,)再输入一个值给,A,,如果,A,Max,则,Max=A,否则,M,ax,不变,(,4,)让记录数据个数的变量增加,1,,即,N=N+1,(,5,)判断,N,是否小于,10,,若成立则转到第,(,3),步执行,否则转到,第,(6),步。,(,6,)打印输出,Max,1.4,算法及算法的表示,1.4.2,算法的特性,1,有穷性:,算法须在执行有穷多个计算步骤后终止,2,确定性:,算法的每个步骤必须都是精确定义的、无二义性的;,3,有效性:,算法中的每一个步骤必须有效地执行,并能得到确定结果;,4,输入:,一个算法中可以没有输入,也可以有一个或多个输入信息,5,输出:,一个算法应有一个或多个输出,1.4,算法及算法的表示,1.4.3,算法的表示,一、,自然语言与伪代码表示算法,自然语言,就是指人们日常使用的语言,可以是汉语、英语或其它语言。,1.4,算法及算法的表示,伪代码,是用介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述算法。,当程序员的笑话,:,老婆给当程序员的老公打电话:“,下班顺路买一斤包子带回来,如果看到卖西瓜的,买一个。”,当晚,程序员老公手捧一个包子进了家门。老婆怒道:“你怎么就买了一个包子?!”老公答曰:“因为看到了卖西瓜的。,-,自然语言容易出现“歧义性”,例,1,-4,的伪代码表示如下:,Begin,(算法开始),输入,A,,,B,,,C,IF AB,则,A,Max,否则,B,Max,IF CMax,则,C,Max,Print Max,End(,算法结束,),例,1,-5,的伪代码表示如下:,Begin,(算法开始),N=1,Input A(,输入数据给变量,A),Max=A,当,NMax,则,Max=A,N=N+1,Print Max,End(,算法结束,),1.4,算法及算法的表示,1,常用的流程符号,l,起止框:,表示算法的开始和结束。,l,处理框:,表示初始化或运算赋值等操作。,l,输入输出框:表示数据的输入输出操作。,l,判断框:,表示根据一个条件成立与否,决定执行两种不同操作中的其中一个。,l,流程线:,表示流程的方向。,二、用流程图表示算法,1.4,算法及算法的表示,(1),顺序结构,顺序结构是简单的线性结构,各框按顺序执行。其流程图,如图,1,-4,所示,2,三种基本结构的表示,图,1-4,顺序结构,图,1,-5,选择结构,1.4,算法及算法的表示,(2),选择(分支)结构,对某个给定条件进行判断,条件为真或假时分别执行不同的内容。其基本形状有两种,如图,1-5,所示。,(,3,)循环结构,循环结构分为,当型循环,和,直到型循环,两种。,当型循环:,执行过程是先判断条件,,当条件为真时,反复执行,“,语句组,”,,一旦条件为假,跳出循环,执行循环紧后的语句。,如图,1,-6(a),所示。,1.4,算法及算法的表示,图,1,-6,循环结构流程图,直到型循环:,执行过程是先执行,“,语句组,”,,再判断条件,条件为真时,一直循环执行语句组,一旦条件为假,结束循环,执行循环紧后的下一条语句。,如图,1,-6(b),所示。,1.4,算法及算法的表示,图,1,-6,循环结构流程图,图,1,-7,例,1,-4,的算法流程图,输入,A,、,B,、,C,1.4,算法及算法的表示,例,1-4,输入三个数,然后输出其中最大的数,图,1-8,例,1-5,的算法流程图,1.4,算法及算法的表示,例,1-5,输入,10,个数,打印输出其中最大的数。,1.4.4,用,N,S,流程图表示算法,三种基本结构的,N-S,图描述如下所示:,1.,顺序结构,顺序结构的,N-S,图,如图,1-9,所示,1.4,算法及算法的表示,图,1-4,顺序结构,图,1,-9,顺序结构的,N-S,图,1.4.4,用,N,S,流程图表示算法,2.,选择结构,对应于选择结构图,1-5,的,N-S,图为图,1-10,所示,1.4,算法及算法的表示,图,1-10,选择结构的,N-S,图,图,1,-5,选择结构,1.4.4,用,N,S,流程图表示算法,3.,循环结构,当型循环结构的,N-S,图如下图。,1.4,算法及算法的表示,图,1-11,循环结构的,N-S,图,图,1,-6,循环结构流程图,1.4.4,用,N,S,流程图表示算法,3.,循环结构,直到循环结构的,N-S,图如下:,1.4,算法及算法的表示,图,1-11,循环结构的,N-S,图,图,1,-6,循环结构流程图,例,1,-4,算法的,NS,流程图,1.4,算法及算法的表示,例,1-4,输入三个数,然后输出其中最大的数,算法的,NS,流程图,例,1,-5,算法的,NS,流程图,1.4,算法及算法的表示,例,1-5,输入,10,个数,打印输出其中最大的数。,1.4,算法及算法的表示,说明:,上面介绍的算法表示是给人看的,即是为帮助程序开发人员阅读、编写程序而设计的一种辅助工具,因此,算法表述,中的文字和符号只要符合人们的约定和习惯即可,人们将,算法流程图,用计算机语言(如,C,、,VB,)编写程序时,必须使用符合其语法规则。否则计算机便不能处理。,1.4,算法及算法的表示,依据,图,1-7,的算法流程图,,可以很方便地转化为相应的程序。下面就是,用,C,语言编写的程序,段。,void,main(),int a,b,c,max;,/,定义变量,scanf(,“,%d%d%d,”,/,输入数据给,A,、,B,、,C,if(ab),/,如果,AB,max=a;,/,将,A,的值赋值给,max,else,/,否则,即,A,不大于,B,max=b;,/,将,B,的值赋值给,max,if(cmax),/,如果,Cmax,max=c;,/,将,C,的值赋值给,max,printf(,“,Max=%d,”,max);,/,打印输出,max,1.5,运行一个,C,程序,1.5.1,C,程序运行的一般步骤,1,源程序编辑,2,程序编译,3,连接程序,4,程序运行,大部分,C,语言系统都提供一个独立的集成开发环境,它可将上述四步连贯在一个程序之中。,VC+/,C-Free,1.5,运行一个,C,程序,1.5.2,在,Microsoft Visual C+,环境下运行,C,语言程序,在,VC+,集成开发环境中建立运行一个新程序通常有以下几个步骤:,(,1,)运行启动,VC+,集成开发环境;,(,2,)在编辑器中编写源程序或打开已有的,C,程序;,(,3,)保存源文件;,(,4,)调试修改程序,直到程序编译无语法错误;,(,5,)编译连接生成可执行文件,运行程序,输入上些数据,验证程序运行输出结果的全理性;,(,6,)最后将调试通过运行正确的程序保存在磁盘中。,1.5,运行一个,C,程序,1.,启动,Visual C+,(最好在机房上机时讲解),1.5,运行一个,C,程序,2,新建,/,打开,C,语言程序文件,本章小结,通过本章的学习,读者应对计算机语言及程序设计的概念,,C,程序的组成特点,,C,程序的运行过程有一个初步了解。,学习,C,语言程序设计,掌握,C,语言语法规则和程序设计方法,培养编程技能是很重的。,C,语言相对其它高级语言来说要相对难一些,但只要认真对待,学习程序设计好的方法就是在掌握语法规则的基础上,,多分析阅读,别人写的程序,,多自己动手编写一些小程序,,,多上机,调试运行程序,做到这,3,个,“,多,”,字,学习好,C,程序设计就不难了。,本章作业,P.21,直接做在教材上,:,二、判断题,三、填空题,四、选择题,做在作业本上,:,五、编程题,2,、,3,本章要求:,掌握基本数据类型的使用,理解不同类型数据在内存中的存放形式,掌握常量的分类及其表示形式,掌握变量的定义及初始化,理解指针的概念,掌握指针变量的定义、初始化及简单使用,掌握数据的输入,/,输出方法及常用输入,/,输出函数的使用,掌握常用内部函数的使用,本章难点:,不同据类型的数据在内存中的存放形式,本章重点:,变量与常量的概念、,格式输入,/,输出函数(,scanf()/printf(),)的基本使用,第,2,章 数据类型与常用库函数,第,2,章 数据类型与常用函数,2.1,语言的数据类型,2.2,常量,2.3,变量,2.4,指针变量,2.5,标准输入,/,输出函数用法,2.6,常用库函数,2.1,语言的数据类型,(引例),例,2-1,下面是计算两个数据参与算术运算的程序,请分析其结果。,void main(),int a,b,c,x,y;,/*,定义,a,b,c,x,y,为整型变量*,/,a=300;b=500;,c=a+b;x=a*b;,y=a/b;,/*a,除以,b,其商赋值给变量,y*/,printf(c=%d,x=%d,y=%d,c,x,y);,(,a,),TC,环境下 (,b,),VC+6.0,环境下,2.1,语言的数据类型,2.1.1,语言数据类型概述,注意,:,在程序中用到的,常量,与,变量,必须是上面的一种数据类型;,正确地区分和使用不同的数据类型,可使程序运行时占用较少的内存,确保程序运行的正确性和可靠性。,2.1,语言的数据类型,2.1.2,基本数据类型,基本数据类型是构成,C,语言的数据类型的最基本要素,包括:,整型,(,int,),实型,(,float,和,double,),字符型,(,char,),例如:整型数据的取值和取值范围,类型说明符 数的范围 分配字节数,int -3276832767 2,字节,short int/short -3276832767 2,字节,long -21474836482147483647 4,字节,unsigned int/unsigned 065535 2,字节,unsigned short int 065535 2,字节,unsigned long int 04294967295 4,字节,(详见,p.20,表,2-1),注意:,在不同的编译系统,同一类型在内存中所占的字节数可能有不同的规定。,在,Visual C+6.0,环境下,,short int,类型占,2,字节,,int,、,unsigned int,类型占,4,字节。,读者应了解所用系统的规定,在将一个程序从一个系统移到另一个系统时,需要注意这个区别。,2.1,语言的数据类型,在数据操作中,有时由于不知道,C,语言中的基本数据类型的实际位长,从而使数据溢出而导致计算结果的错误。因此,常需要使用下面的程序来测试。,【,例,DataTest.C】,基本数据类型的位长测试,#include,void main(),printf(char -%d byten,sizeof(char);,printf(short -%d bytesn,sizeof(short);,printf(int -%d bytesn,sizeof(int);,printf(long -%d bytesn,sizeof(long);,printf(float -%d bytesn,sizeof(float);,printf(double -%d bytesn,sizeof(double);,printf(long double-%d bytesn,sizeof(long double);,补充,:实际位长测试,sizeof,运算符,:,获取一个类型所占内存的字节数大小,char-1 byte,short-2 byte,int-4 byte,long-4 byte,float-4 byte,double-8 byte,long double-8 byte,分析和说明:,sizeof,是,C,语言的一个运算符关键字,它的使用类似于一个函数,用来获取一个表达式、类型或数组等所占内存的字节数大小。,该程序在,Visual C+6.0,中运行,其运行结果如下所示:,2.1,语言的数据类型,使用,C,的数据(变量或常量),应该搞清楚以下几点:,(,1,)它的,数据类型,;,(,2,)此类数据在内存中的,存储形式,、占用的字节数;,(,3,)数据的,取值范围,;,(,4,)数据能参与的,运算,;,(,5,)数据的有效范围(是全局、局部)、生成周期(是动态还是静态变量),。,0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,例如:一个整型(,int,)数据的最大值,符号位,2.1.3 *,各类数据在内存中的存放方式,了解各类数据在计算机内存中的存储形式,对于分析程序运行结果,在程序设计中合理使用数据类型是很重要的。,本节的知识属于计算机基础知识,如果读者已掌握,可跳过本节内容。,2.1,语言的数据类型,1),机器数,用,“,0,”,表示正数,,“,1,”,表示负数,其余位仍表示数值。,把在机器内存的正、负号数字化的数称为机器数,。,例如,,C,语言中的基本整型数据在计算机中通常用,16,位(即,2,个字节)来存储,图,2-3,所示的是十进制数,67,和,-67,在计算机中的存储形式。,1.,机器数与,原码、补码和反码表示,2.1,语言的数据类型,2,)原码表示法,原码表示方法中,数值用绝对值表示,在数值的最左边用,“,0,”,和,“,1,”,分别表示正数和负数,书写成,X,原,表示,X,的原码。,例如,当,n=16,(即使用,2,个字节来存储),十进制数,+67,和,-67,的原码表示如图,2-3,所示,记为:,+67,原,0000000001000011,-67,原,1000000001000011,2.1,语言的数据类型,从定义可以看出,在原码的表示中,有以下两个,特点,:,(,1,)最高位为,符号位,,正数为,0,,负数为,1,,其余,n-1,位是,X,的绝对值的二进制表示。,(,2,),0,的原码有两种表示:,+0,原,0000000000000000,-0,原,1000000000000000,因此,原码表示中,数值,0,不是唯一的。,2.1,语言的数据类型,3,)反码表示法,用,X,反,表示,X,的反码。如果机器的字长为,n,,则反码的定义如下:,例如,当,n=16,,十进制数,+67,和,-67,的反码表示为:,+67,反,0000000001000011,-67,反,1111111110111100,2.1,语言的数据类型,由此可以看出,在反码的表示中,,有以下特点:,(,1,),正数,的反码与原码相同,,负数,的反码是其绝对值的二进制表示按各位取反(,0,变,1,,,1,变,0,)所得的表示,其中符号位不变。,(,2,),0,在反码表示中也有两种表示:,+0,反,0000000000000000,-0,反,1111111111111111,由此可见,,0,在反码表示(即数值,0,)中也不是唯一的。,2.1,语言的数据类型,4,)补码表示法,用,X,补,表示,X,的补码。设机器的字长为,n,,则补码的定义如下:,例如,当,n=16,,十进制数,+67,和,-67,的补码表示为:,+67,补,0000000001000011,-67,补,1111111110111101,2.1,语言的数据类型,在补码的表示中,有以下,特点:,(,1,),正数,的补码与原码、反码相同,,负数,的补码是其绝对值的二进制表示按各位取反(,0,变,1,,,1,变,0,)加,1,,其中符号位不变,即为其反码,+1,。,(,2,),0,在补码表示中:,+0,补,-0,补,0000000000000000,,因此,数值,0,的补码表示是唯一的。,说明:由于补码运算方便,所以在计算机中广泛使用。,如何将一个负数的二进制补码数转换成十进制数?,2.1,语言的数据类型,将一个负数的补码数转换成十进制数的步骤如下:,(,1,)首先将各位取反。,(,2,)将其转换为十进制数,并在前加一负号,(,3,)对所得到的数再减,1,,即得到该数的十进制数。,例如,:,求补码,1111111110111101,对应的十进制数,其步骤:,取反:,0000000001000010,;转换为十进制数,加负号得:,-66,,再减,1,,则为,-67,。,按照上述方法,不难求得:,补码,1111111111111111,对应的十进制数是:,-1,。,补码,1000000000000000,对应的十进制数是:,-32768,(计算机中整数是最小值)。,补充,5,),由补码数求对应的十进制数,2.1,语言的数据类型,2.2.2,定点数和浮点数,1,整数的表示,定点数,符号位,数值部分,.,如果计算机用,N,位来表示一个带符号的整数,M,,可写成:,M=N,s,N,n-1,N,n-2,N,2,N,1,N,0,N,s,为符号位,M,的取值范围:,-2,n,M2,n,-1,例如,整数,194,采用定点数存储形式,如下图所示:,2.1,语言的数据类型,2,)实数的表示,浮点数,在计算机中一个浮点数由两部分构成:阶码和尾数,阶码是整数,尾数是纯小数。即可表示为:,M=2,P,S,其中,,P,是一个二进制整数,,S,是二进制小数,这里称,P,为数,N,的阶码,,S,称为数,M,的尾数,,S,表示了数,M,的全部有效数字,阶码,P,指明了小数点的位置。,2.1,语言的数据类型,实型数据是采用浮点数的存放形式存储的。,一般微型计算机中单精度(,float,类型)使用,4,个字节来存储,通常阶码及阶符占,1,个字节,尾数及尾符占,3,个字节,阶符和尾符各占,1,个二进制位,,float,类型的数值范围是,-2,P,2,P,,其中,P,为,7,个二进制位表的最大数(,1111111,),即,127,,所以,float,类型的数值范围是,-2,P,2,P,,即,-2,127,2,127,,即,-10,38,10,38,。,2.1,语言的数据类型,2.2.3,字符,的存储形式,ASCII,码,目前计算机中普遍采用的是,ASCII,(,A,merican,S,tandard,C,ode for,I,nformation,I,nterchange,)码,即美国信息交换标准代码。,ASCII,码有,7,位版本和,8,位版本两种,国际上通用的是,7,位版本,,7,位版本的,ASCII,码有,128,个元素,只需用,7,个二进制位(,2,7,128,)表示,其中控制字符,34,个,阿拉伯数字,10,个,大小写英文字母,52,个,各种标点符号和运算符号,32,个。在计算机中实际用,8,位表示一个字符,最高位为“,0”,。标准,ASCII,码共,128,个符号(参见,附录,A,)。,2.1,语言的数据类型,例,2-2,通过下面程序的输出结果查看,ASCII,值和相应的字符,#include,void main(),int i;,for(i=0;i=127;i+),/i,从,0,循环到,127,步长为,1,i+,即,i=i+1,printf(“%d%c”,i,i);,/,按十进制格式输出,i,,,再按字符格式输出,i,2.1,语言的数据类型,2.2,常量,定义,:,在程序运行时,其值不能被改变的量叫常量。,如,5,3.14159,a,等,2.2.1,数值常量,1.,整型常量,在语言中,使用的整常数有,八进制,、,十六进制,和,十进制,三种。,(,1,),十进制,整常数。,237 -568 0 1627,(,2,),八进制,整常数,八进制整常数必须以,0,开头,即以,0(,数值,0,)作为八进制数的前缀。,0,15(,十进制为,13),0,101(,十进制为,65),079 08001,不合法的八进制数,(,p.25,表,2-2,),2.2,常 量,(,3,),十六进制整数的前缀为,0X,。,0X,2A(,十进制为,42),0X,A0(,十进制为,160),0X,FFFF(,十进制为,65535),以下各数是,不合法,的十六进制整常数:,5A(,无前缀,0X)0X3H(,含有非十六进制数码),若要表示长整型(,long),整数,,在数的最后加表示长整型的后缀修饰符号字母,“,l,”,。,如:,125,0,125,l,0X,125,l,等价于,125,、,(125),8,、,(125),16,请注意,25,和,25l,的区别,前者用,2,字节存储,后者则使用,4,个字节存储。,说明:,2.2,常 量,例,2-3,通过以下例题来说明整型常量的三种表示方法及相互关系,void main(),int x=123,y=0123,z=0 x123;,printf(%d%d%dn,x,y,z);,/,以十进制形式,%d,输出,printf(%o%o%on,x,y,z);,/,以八进制形式,%o,输出,printf(%x%x%xn,x,y,z);,/,以十六进制形式,%x,输出,2.,实型常量,实型也称为浮点型。实型常量也称为实数或者浮点数。在语言中,实数只采用十进制。,它有二种形式:,小数形式,与,指数形式,(,1,),小数,形式,由数码,0-9,和小数点组成。,例如:,0.123 .123 123.0 -123,等均为合法的实数。,(,2,),指数,形式,由十进制数,加阶码标志,“,e,”,或,“,E,”,以及阶码(只能为整数,可以带符号)组成。,其一般形式为,a E n,(,a,为十进制数,,n,为十进制数,),值为,a*10,n,2.2,常 量,2.2,常 量,例如:,1.25E+3 1.25e+3 1.25,10,3,1250.0,说明,:,当幂为正数时,正号可以省略。即,1.25E+3,等价于,1.25E3;,同一个实数可以有多种表示形式,例如:,1250.0,可以用,0.0125E+5,,,0.125E+4,,,1.25E+3,,,12.5E+2,125E+1,。一般将,1.25,10,3,称为“,规范化的指数形式,”。,2.2,常 量,2.2.2,字符常量,字符常量是用,单引号,括起来的一个字符。例如,a,b,=,+,?,都是合法字符常量。,在语言中,字符常量有以下特点:,1.,字符常量只能用,单引号,括起来,不能用双引号或其它括号;,2.,字符常量只能是单个字符,不能是字符串,;,3.,字符可以是字符集中任意字符。,如,5,和,5,是不同的。,2.2,常量,2.2.3,字符串常量,C,语言中的字符串常量是由一对,双引号,括起来的字符序列。每个字符串最后有一结束标志,0,。,例如:,ABC,A,123lkdf,字符串常量在内存中存储时,系统自动在字符串的末尾加一个,“,串结束标志,“,,,因此在程序中,,长度为,n,个字符的字符串常量,在内存中占有,n+1,个字节的存储空间,。,2.2,常 量,例如:,a,与,a,是,C,语言中两种完全不同类型的数据- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 概述 课件 全套 教学 教程 整套 电子 教案 讲义
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文