闽南师大C语言数据结构

上传人:深*** 文档编号:108079474 上传时间:2022-06-15 格式:PPTX 页数:53 大小:243.44KB
收藏 版权申诉 举报 下载
闽南师大C语言数据结构_第1页
第1页 / 共53页
闽南师大C语言数据结构_第2页
第2页 / 共53页
闽南师大C语言数据结构_第3页
第3页 / 共53页
资源描述:

《闽南师大C语言数据结构》由会员分享,可在线阅读,更多相关《闽南师大C语言数据结构(53页珍藏版)》请在装配图网上搜索。

1、会计学1闽南师大闽南师大C语言数据结构语言数据结构C语言程序设计语言程序设计-第二章:数据结构第二章:数据结构第1页/共53页2.1 C语言数据类型 第2页/共53页 2.2.1 2.2.1 常量常量 在程序运行过程中,其值不能被改变的量称为常量 常量区分为不同的类型:整型 100,125,-100,0实型 3.14 , 0.125,-3.789字符型 a, b,2符号常量符号常量为了使用方便,可用一个符号名来代表一个常量。第3页/共53页用一个标识符代表一个常量。符号常量的值在其作用域内不能改变,也不能再被赋值。 运行结果:运行结果: total=300total=300 程序中用#defi

2、ne命令行定义PRICE代表常量30,此后凡在本文件中出现的PRICE都代表30,可以和常量一样进行运算如再用赋值语句给PRICE赋值是错的PRICE=40;/* 错误,不能给符号常量赋不能对符号常量指定类型int PRICE; /* 错误,PRICE不是变量,不能指 定类型 */ 第4页/共53页 2.2.2 2.2.2变量变量 变量代表内存中具有特定属性的一个存储单元,它用来存放数据,也就是变量的值,在程序运行期间,这些值是可以改变的。 变量名实际上是一个以一个名字对应代表一个地址,在对程序编译连接时由编译系统给每一个变量名分配对应的内存地址。从变量中取值,实际上是通过变量名找到相应的内存

3、地址,从该存储单元中读取数据。第5页/共53页 2.2.2 2.2.2变量变量 用来标识对象名字(包括变量、函数、数组、类型等)的有效字符序列 。 C语言中,有3类标识符:关键字,系统预定义的标识符 ,用户标识符。 变量的名字必须符合C语言对标识符标识符的规定。 C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。 第6页/共53页 变量命名的规定:变量的名字必须符合C语言对标示符得规定 例:例:sum,_total, month, Student_name, lotus_1_2_,BASIC, li_ling M.D.John, ¥123,3D64,ab 第

4、7页/共53页 编译系统将大写字母和小写字母认为是两个不同的字符。 建议变量名的长度最好不要超过8个字符。 在选择变量名和其它标识符时,应注意做到“见名知意”,即选有含意的英文单词 (或其缩写)作标识符。 要求对所有用到的变量作强制定义,也就是“先定义,后使用” 。第8页/共53页2.3.12.3.1整型常量的表示形式整型常量的表示形式 整型常量即整常数。在语言中,整常数可用以下三种形式表示:(1)十进制整数。 如:如:123, -456,4。(2)八进制整数。以0头的数是八进制数。 如:如:0123表示八进制数123,等于十进制数83,-011表示八进制数-11,即十进制数-9。第9页/共5

5、3页2.3.12.3.1整型常量的表示形式整型常量的表示形式(3)十六进制整数。以0 x开头的数是16进制数。 如:如:0 x123,代表16进制数123,等于十进制数 291。 -0 x12等于十进制数18。 2.3.2 2.3.2整型变量整型变量 整型变量用来存放整型常量。整型变量的基本类型符为int。 C语言中有以下3类整型变量 :基本整型,短整型,长整型。第10页/共53页 ANSI C标准没有具体规定以上各类数据所占内存的字节数而是由各计算机系统自行决定。 Turbo C中,int型和short型数据都是2个字节,即16个二进制位。long型数据是4个字节,32位。而VC+则给sho

6、rt型数据分配2个字节,16位,int和long型数据都是4个字节,32位 。第11页/共53页一般情况下,存储整数时存储单元中的第一个二进位用来代表数值符号,而在实际应用中,变量的值常常是正的 ,所以存储单元全部用来存储数值本身,此定义无符号整数。所以归纳起来,在C语言中,可以定义和使用6种整型变量共六种共六种有符号基本整型有符号短整型有符号长整型无符号基本整型无符号短整型无符号长整型(signed)int (signed)short (int )(signed) long (int)unsigned intunsigned short (int)unsigned long (int) 注意

7、:注意:括号表示其中的内容是可选的.第12页/共53页 整数类型的有关数据:第13页/共53页 可以看到不同种类的整型数据可以进行算术运算 运行结果:运行结果: , 第14页/共53页0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 010第15页/共53页0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 01 1 11 1 1 1 1 1 1 1 1 0 10 11 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0第16页/共53页数值是以补码表示的。一个整型变量只能容纳-3276832767范围内的数,无法表示大于32767或小于-32768的数。遇此情况就发

8、生“溢出”。运行结果:运行结果: 32767,-3276832767,-32768 如果系统给一个整型变量分配2个字节,则变量的最大允许值为32767,若超出最大职则出现溢出现象。 第17页/共53页 2.3.5 2.3.5 整型常量的类型整型常量的类型 整型变量的分类规则: (1)一个整数,如果其值在-32768+32767范围内,认为它是int型,它可以赋值给int型和long int型变量。 (2) 一个整数,如果其值超过了上述范围,而在-2147483637+2147483647范围内,则认为它是为长整型。可以将它赋值给一个long int型变量。 第18页/共53页 2.3.5 2.

9、3.5 整型常量的类型整型常量的类型 (3) 在一个整常量后面加一个字母l或L,则认为是long int型常量,例如123l、432L、0L等,这往往用于函数调用中。如果函数的形参为long int型,则要求实参也为long int型。 (4) 一个整常量后面加一个字母u或U,认为是unsigned int型,如12345u在内存中按unsigned int规定的方式存放(存储单元中最高位不作为符号位,而用来存储数据)。第19页/共53页 2.4.12.4.1浮点型常量的表示形式浮点型常量的表示形式两种表两种表示形式示形式十进制小数十进制小数指数指数0.1230.1233 3e-3e-3注意注

10、意: :字母e(或E)之前必须有数字,且e后面的指数必须为整数 第20页/共53页 2.4.12.4.1浮点型常量的表示形式浮点型常量的表示形式 规范化的指数形式:规范化的指数形式: 在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字. 例如例如: : 123.456可以表示为: 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e 其中的1.23456e31.23456e3称为“规范化的指数形式”。第21页/共53页 2.4.2 2.4.2 浮点型变量浮点型变量 1)浮点型变量分

11、为单精度(float型)、双精度(double型)和长双精度型(long double)三类形式。第22页/共53页 2.4.2 2.4.2 浮点型变量浮点型变量 2)浮点型数据在内存中的存放形式:一个浮点型数据一般在内存中占4个字节(32位)。与整型数据的存储方式不同,浮点型数据是按照指数形式存储的。系统把一个浮点型数据分成小数部分和指数部分,分别存放。指数部分采用规范化的指数形式。第23页/共53页一个浮点型变量只能保证的有效数字是7位有效数字,后面的数字是无意义的,并不准确地表示该数。应当避免将一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”小的数运行结果:运行结果: 1234

12、56.789e5123456.789e52.4.2 2.4.2 浮点型变量浮点型变量第24页/共53页.4.3 .4.3 浮点型常量的类型浮点型常量的类型 C编译系统将浮点型常量作为双精度来处理。 例如例如:f = 2.45678 * 4523.65 系统先把2.45678和4523.65作为双精度数,然后进行相乘的运算,得到的乘也是一个双精度数。如果把一个浮点型常量赋给一个单精度变量f系统给出警告,警告不影响连接和运行最后结果但只取其结果前7位赋给浮点型变量f。如是在数的后面加字母f或F(如1.65f, 654.87F),编译系统就会把它们按单精度处理。第25页/共53页.5.1 .5.1

13、字符常量字符常量(1)用单引号包含的一个字符是字符型常量(2)只能包含一个字符a a, ,A A, , 1 1abcabc、“a a”第26页/共53页 有些以有些以“ ”开头的特殊字符称为转义字符开头的特殊字符称为转义字符 含 义 ASCII代码 换行,将当前位置移到下一行开头 10 水平制表(跳到下一个Tab位置) 9 退格,将当前位置移到前一列 8 回车,将当前位置移到本行开头 13 换页,将当前位置移到下页开头 12 a 发出铃声 7 代表一个反斜杠字符“”92 代表一个单撇号字符 39 代表一个双撇号字符34 到位八进制数所代表的字符 到位十六进制数所代表的字符 第27页/共53页

14、打印机上的显示结果:打印机上的显示结果: fab c gde h jik 显示屏上的运行结果:显示屏上的运行结果: f gde j k第28页/共53页 2.5.22.5.2字符变量字符变量 字符型变量用来存放字符常量,注意只能放一个字符。 字符变量的定义形式如下:char c1,c2; 在本函数中可以用下面语句对c1,c2赋值: c1a;c2 b ; 一个字符变量在内存中占一个字节。 第29页/共53页2.5.3 2.5.3 字符数据在内存中的存储形式及其使用方字符数据在内存中的存储形式及其使用方法法 一个字符常量存放到一个字符变量中,实际上并不是把该字符的字型放到内存中去,而是将该字符的相

15、应的ASCII代码放到存储单元中。这样使字符型数据和整型数据之间可以通用。注意: 一个字符数据既可以以字符形式输,也可以以整数形式输出以字符形式输出时,系统先将存储单元中的I码转换成相应字符, 然后输出。 以整数形式输出时,直接将码作为整数输出。也可以对字符数据进行算术运算, 此时相当于对它们的码进行算术运算。 第30页/共53页在第4和第5行中,将整数97和98分别赋给c1和c2,它的作用相当于以下两个赋值语句:c1;c2; 因为a和b的ASCII码为97和98 运行结果:运行结果: 97 9897 98第31页/共53页程序的作用是将两个小写字母a和b转换成大写字母A和B。从代码表中可以看

16、到每一个小写字母比它相应的大写字母的ASCII码大32。语言允许字符数据与整数直接进行算术运算。 运行结果:运行结果: 第32页/共53页 有些系统(如Turbo C,VC+)将字符变量定义为signed char型。其存储单元中的最高位作为符号位,它的取值范围是-128127。如果在字符变量中存放一个ASCII码为0127间的字符,由于字节中最高位为0,因此用%d输出字符变量时,输出的是一个正整数。如果在字符变量中存放一个ASCII码为128255间的字符,由于在字节中最高位为1,用%d格式符输出时,就会得到一个负整数。 第33页/共53页 2.5.4 2.5.4 字符串常量字符串常量 字符

17、串常量是一对双撇号括起来的字符序列. 合法的字符串常量:“How do you do.”, “CHINA”, “a” , “$123.45” 可以输出一个字符串,如printf(“How do you do.”);第34页/共53页 是字符常量, “a”是字符串常量,二者不同。 如:如:假设被指定为字符变量 :char c c= a; “a” ;c “CHINA”; 结论:结论:不能把一个字符串常量赋给一个字符变量。第35页/共53页 规定:在每一个字符串常量的结尾加一个 “字符串结束标志”,以便系统据此判断字符串是否结束。规定以字符作为字符串结束标志。 如:如:如果有一个字符串常量” ,实际

18、上在内存中是:CHINA0 它占内存单元不是个字符,而是个字符,最后一个字符为。但在输出时不输出。第36页/共53页混合运算:整型(包括int,short,long)、浮点型(包括float,double)可以混合运算。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算.说明: 这种类型转换是由系统自动进行的。第37页/共53页 1. 1. 语言的运算符有以下几类:语言的运算符有以下几类:算术运算符 (+ - * / %)关系运算符 (!)逻辑运算符 (!|)位运算符 ( |)赋值运算符 (及其扩展赋值运算符)条件运算符 (?:)逗号运算符 (,)第38页/共53页(8)指针运算符

19、(*和)(9)求字节数运算符()(10)强制类型转换运算符( (类型) )(11)分量运算符(-)(12)下标运算符()(13)其他 (如函数调用运算符()第39页/共53页2. C语言的表达式有以下几类:语言的表达式有以下几类:(1)算术表达式:如2+6.7*3.5+sin(0.5)(2)关系表达式:如x0,y0 & y0 (表示x0与y0同时成立,&是逻辑运算符,代表“与”)(4)赋值表达式:如a=5.6(5)逗号表达式:如a=3,y=4,z=8 第40页/共53页 1. 1. 基本的算术运算符基本的算术运算符: : (加法运算符,或正值运算符。如:、) (减法运算符,或负值运算符。如:、

20、)* * (乘法运算符。如:*) (除法运算符。两个整数相除的结果为整数两个整数相除的结果为整数,如:结果为) (模运算符,或称求余运算符,两侧均应为整型 数据,如:的值为)。第41页/共53页 2. 2. 算术表达式和运算符的优先级与结合性算术表达式和运算符的优先级与结合性 用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语法规则的式子,称为算术表达式算术表达式。运算对象包括常量、变量、函数等。 例如例如: : *.5a 是一个合法的表达式第42页/共53页 语言规定了运算符的优先级和结合性。 在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。 规定了各种运算符的

21、结合方向(结合性) 算术运算符的结合方向为“自左至右”,即先左后右 。第43页/共53页 3. 3. 强制类型转换运算符强制类型转换运算符 可以利用强制类型转换运算符将一个表达式转换成所需类型。 一般形式:(类型名)(表达式)说明: 表达式应该用括号括起来。 在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。第44页/共53页有两种类型转换,一种是在运算时不必用户指定,系统自动进行的类型转换,如3+6.5。第二种是强制类型转换。当自动类型转换不能实现目的时,可以用强制类型转换。 运行结果:运行结果: x3.600000, i=3第45页/共53页 4. 4. 自增、自减运

22、算符自增、自减运算符 作用是使变量的值增或减如如: ,(在使用之前,先使的值加 (减),(在使用之后,使的值加( 减) 第46页/共53页i+i+与与+i+i的区别:的区别: 是先执行后,再使用的值; 是先使用的值后,再执行。例如:例如: ; i的值先变成4, 再赋给,j的值为 ; 先将 i的值3赋给,的值为,然后变为第47页/共53页注意:注意: (1)自增运算符(),自减运算符(),只能用于变量,而不能用于常量或表达式, (2)和的结合方向是“自右至左”。 (3)自增(减)运算符常用于循环语句中使循环变 量自动加。也用于指针变量,使指针指向下一个地址。 (4)使用和时 ,为避免二义性,最好

23、采取大家都能理解的写法,可以加一些“不必要”的括号,如(i+)+j。第48页/共53页逗号运算符逗号运算符: :将两个表达式连接起来,又称为“顺序求值运算符”。 如:如:5, 一般形式一般形式: : 表达式,表达式表达式,表达式求解过程:求解过程: 先求解表达式,再求解表达式。整个逗号表达式的值是表达式的值。 逗号表达式 的值为14第49页/共53页例:例:逗号表达式*5,* 分析分析: :赋值运算符的优先级别高于逗号运算符, 因此应先求解*5。的值为5,然后求解*,得。整个逗号表达式的值为。 一个逗号表达式又可以与另一个表达式组一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式。成一个

24、新的逗号表达式。 如如: :(*,*),a+5 先计算出的值等于,再进行*的运算得60(但值未变,仍为15),再进行得,即整个表达式的值为。第50页/共53页 逗号表达式的一般形式可以扩展为 表达式,表达式,表达式,表达式,表达式,表达式,表达式,表达式 它的值为表达式的值。 逗号运算符是所有运算符中级别最低的例例: : (,*) ,*3赋值表达式,将一个逗号表达式的值赋给,的值等于 逗号表达式,包括一个赋值表达式和一个算术表达式,的值为,整个逗号表达式的值为18。 第51页/共53页注意注意: :并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的。 如如: printf(“%d,%d,%d”,a,b,c);“,”并不是一个逗号表达式,它是printf函数的3个参数printf(“%d,%d,%d”,(a,b,c),b,c) “(,)”是一个逗号表达式,它的值等于的值。 第52页/共53页

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!