工程类C语言程序设计优秀课件_第1页
工程类C语言程序设计优秀课件_第2页
工程类C语言程序设计优秀课件_第3页
工程类C语言程序设计优秀课件_第4页
工程类C语言程序设计优秀课件_第5页
已阅读5页,还剩345页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计2021/02/251C语言程序设计2021/02/251第一章C语言概述C语言的发展与特点C语言的基本程序结构C语言程序的开发过程C语言的基本词法算法2021/02/252第一章C语言概述C语言的发展与特点2021/021.1C语言出现的历史背景汇编语言依赖于计算机硬件,程序的可读性和可移植性差;一般高级语言难以实现汇编语言的某些功能如对内存地址的操作、位操作等。2021/02/2531.1C语言出现的历史背景汇编语言依赖于计算机硬件,程序1.2C语言的发展史1960年ALGOL60;1963年英国剑桥大学提出CPL语言;1967年MatinRichards提出BCPL语言;1970年KenThompson提出B语言;1972-1973Dennis.M.Ritchie提出C语言;BrianW.Kernighan和D.M.Ritchie介绍标准C;1987年美国国家标准化协会提出ANSIC。2021/02/2541.2C语言的发展史1960年ALGOL60;201.3C语言的特点简洁、紧凑,使用方便、灵活;允许直接访问地址,能进行位操作;运算符丰富;数据类型丰富;结构化程序语言,便于实现程序的模块化;程序执行效率高,可移植性好。2021/02/2551.3C语言的特点简洁、紧凑,使用方便、灵活;20211.4C语言的基本程序结构C程序是由函数构成的,每个C程序有且只有一个主函数(main),可包含若干其他函数;每个函数由首部与函数体组成;首部包括函数类型、函数名、函数参数(形参)、参数类型,intmax(intx,inty)函数体包括声明部分和执行部分。2021/02/2561.4C语言的基本程序结构C程序是由函数构成的,每个Cmain函数位置任意,但总是从main函数开始执行,在main函数中结束;C程序书写自由,每个语句后需加一个分号;主函数可调用任何非主函数,非主函数之间可互相调用,但不能调用主函数;C语言本身没有输入输出语句;用/*…………*/进行注释。2021/02/257main函数位置任意,但总是从main函数开始执行,在mai1.5C语言程序的开发过程编辑编译链接

计算机只能识别和执行由0和1组成的二进制的指令,为了使计算机能执行高级语言源程序,必须先用“编译程序”把源程序翻译成二进制形式的“目标程序”,然后将该目标程序与系统的函数库和其他目标程序连接成为可执行的目标程序。2021/02/2581.5C语言程序的开发过程编辑计算机只1.6C语言的基本词法字符集:包括大小写英文字母52个、数字10个、键盘符号33个、转义字符。标识符:是用户自定义的一组字符序列,用来表示程序中需要辨认的对象名称,如符号常量、变量、数组、函数。规定:

标识符是由字母或下划线开头的字母、数字、下划线组成的一串符号,最长不能超过32个字符;大小写字母有区别,大写字母只用来定义宏名,其他都采用小写字母表示。2021/02/2591.6C语言的基本词法字符集:包括大小写英文字母52个保留字:32个,有特殊含义,主要用于构成语句,进行存储类型和数据类型的定义,不允许用户作为自定义标识符使用;词类:常量、变量、运算符、函数、表达示、保留字;语句:完成特定的操作,语句的有机组合序列完成指定的功能;2021/02/2510保留字:32个,有特殊含义,主要用于构成语句,进行存储类型和语句的种类赋值语句;函数调用语句;表达式语句;流程控制语句;复合语句;空语句;2021/02/2511语句的种类赋值语句;2021/02/25111.7算法著名计算机科学家沃思提出公式:程序=数据结构+算法数据结构:对数据的描述即指定数据的类型和数据的组织形式;算法:对操作的描述即操作步骤。2021/02/25121.7算法著名计算机科学家沃思提出公式:2021/021.7.1简单算法举例判定2000-2500年中的每一年是否闰年。设定y为被检测的年份。算法如下:S1:2000=>yS2:若y不能被4整除,则输出y“不是闰年”,然后转至S6S3:若y能被4整除,不能被100整除,则输出y“是闰年”,然后转至S6S4:若y能被100整除,又能被400整除,输出y“是闰年”;否则输出y“不是闰年”,然后转至S6S5:输出y“不是闰年”S6:y+1=>yS7:当y<=2500时,转S2继续执行,如y>2500,算法停止;2021/02/25131.7.1简单算法举例判定2000-2500年中的每一年1.7.2算法的特点有穷性;确定性;有零个或多个输入;有一个或多个输出;有效性2021/02/25141.7.2算法的特点有穷性;2021/02/25141.7.3算法的表示用流程图表示算法;用伪代码表示算法;用计算机语言表示算法。2021/02/25151.7.3算法的表示用流程图表示算法;2021/02/2第二章C语言的数据类型、运算符与表达式C语言的数据类型;C语言的运算符与表达式;2021/02/2516第二章C语言的数据类型、运算符与表达式C语言的数据类2.1C语言的数据类型数据类型基本类型构造类型指针类型空类型(void)整型(int)字符型(char)实型(浮点型)数组类型结构体类型(struct)共用体类型(联合类型)(union)枚举类型单精度型(float)双精类型(double)2021/02/25172.1C语言的数据类型数据类型基本类型构造类型指针类型2.2常量在程序运行过程中,其值不能被改变的量称为常量。C语言中规定的常量类型有以下五种:整型常量、实型常量、字符常量、字符串常量和符号常量。2021/02/25182.2常量在程序运行过程中,其值不能被改变2.2.1整型常量1.整型常量的表示方法:十进制整数:无前缀,数码取值为0~9,如123,-456。八进制整数:前缀为0,数码取值为0~7,如0123,-011。八进制数与十进制数的转换方法如下:(0123)8=1*82+2*81+3*80=64+16+3=(83)102021/02/25192.2.1整型常量1.整型常量的表示方法:2021/十六进制整数:前缀0X或0x,数码取值为0~9,A~F或a~f,如0x2A,-0x12。十六进制数与十进制数转换方法:(-0x12)16=-(1*161+2*160)=-(16+2)=(-18)102.整型常量的后缀:加后缀L或l,表示长整型数。加后缀u,表示无符号数。2021/02/2520十六进制整数:2021/02/25202.2.2实型常量实型常量即实数又称为浮点数,C语言中实数只采用十进制,有两种表示形式:小数形式:由数码0~9和小数点组成(注意必须有小数点),如.123,-123.4567;指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数),如-2.1e2,2.1e-2。2021/02/25212.2.2实型常量实型常量即实数又称为浮点数,C语言中实2.2.3字符常量C语言中,字符常量是用单引号括起来的单个字符,如‘a’,‘D’,‘$’等。转义字符是一种特殊形式的字符常量,它是以一个“\”开头的字符序列。2021/02/25222.2.3字符常量C语言中,字符常量是用单引号括起来表2.1转义字符及其含义字符形式含义\n换行,将当前位置移到下一行开头\t水平制表(跳到下一个tab位置)\b退格,将当前位置移到前一列\r回车,将当前位置移到本行开头\f换页,将当前位置移到下页开头\\反斜杠字符“\”\’单引号字符\”双引号字符\ddd1到3位8进制数所代表的ASCⅡ字符\xhh1到2位16进制数所代表的ASCⅡ字符2021/02/2523表2.1转义字符及其含义字符形式含义\n换行,将当前位置移到例2.1转义字符的使用main(){printf(“abc\tde\rf\tg\n”);printf(“h\ti\b\bjk”);}2021/02/2524例2.1转义字符的使用main()2021/02/2524例2.1结果程序运行后在打印机上得到以下结果:fabcgdehjik注意在显示屏上最后看到结果以与上述打印结果不同,是:fgdehjk2021/02/2525例2.1结果程序运行后在打印机上得到以下结果:22.2.4字符串常量C语言中,字符串变量是由一对双引号括起来的字符序列,如“China”,“$3.232”。注意:不要将字符常量与字符串常量混淆。2021/02/25262.2.4字符串常量C语言中,字符串变量是字符常量与字符串常量的区别字符常量是由单引号括起来的,字符串常量是由双引号括起来的;字符常量只能是单个字符,字符串常量则可是零个或多个字符;可把一个字符常量赋予一个字符变量,但不能把一个字符串变量赋予一个字符变量,C语言中没有相应的字符串变量,可用字符数组来存放字符串常量;字符常量占一个字节的内存,字符串常量占的内存字节数等于字符串中字节数加1,最后一个字节存放字符‘\0’作为字符串结束标志。2021/02/2527字符常量与字符串常量的区别字符常量是由单引号括起来的,字符串2.2.5符号常量C语言中,可用一个标识符来表示一个常量,称为符号常量又称为宏定义,使用前须先定义,其定义规则为:#define标识符常量2021/02/25282.2.5符号常量C语言中,可用一个标例2.2符号常量的使用#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf(“total=%d”,total);}使用符号常量的好处:含义清楚;在需要改变一个常量时能做到“一改全改”;2021/02/2529例2.2符号常量的使用#definePRICE30使2.3变量变量是指在程序运行中其值是变化的量。一个变量应该有一个变量名,在内存中占据一定的存储单元,在该存储单元中存放变量的值。3变量值a变量名存储单元图2.12021/02/25302.3变量变量是指在程序运行中其值是变化C语言中,要求对变量作强制定义,即“先定义,后使用”。便于发现错误;为每一个变量指定确定类型,在编译时就能为其分配相应的存储单元。2021/02/2531C语言中,要求对变量作强制定义,即“先定义,后使用”。2整型数据在内存中的存储方式整型数据在内存中是以二进制形式存放的。若定义了一个整型变量i:inti=10;图3.2(a)是数据存放的示意图,图3.2(b)是数据在内存中实际存放的情况;i10(a)i0000000000001010(b)图2.22021/02/2532整型数据在内存中的存储方式整型数据在内存中是以实际上,整型数值是以补码表示的。一个正数的补码与其原码相同,求负数的补码方法:将该数的绝对值的二进制形式按位取反再加1。例如求-10的补码:00000000000010101111111111110101111111111111011010的原码取反再加1得-10的补码2021/02/2533实际上,整型数值是以补码表示的。一个正数的补2.3.1整型变量有符号基本整型[signed]int有符号短整型[signed]short[int]有符号长整型[signed]long[int]无符号基本型unsignedint无符号短整型unsignedshort[int]无符号长整形unsignedlong[int]1.整型变量的分类:2021/02/25342.3.1整型变量有符号基本整型[signed]int1类型说明符数的取值范围字节数[signed]int-32768~32767即-215~(215-1)2unsignedint0~65535即0~(216-1)2[signed]short[int]-32768~32767即-215~(215-1)2unsignedshort[int]0~65535即0~(216-1)2[signed]long[int]-2147483648~2147483647即-231~(231-1)4unsignedlong[int]0~4294967295即0~(232-1)4表2.1整型数据的所占的内存字节数与取值范围2021/02/2535类型说明符数的取值范围字节数[signed]int-3272.整型变量的说明类型说明符变量名标识符,变量名标识符,…...;如:inta,b,c;unsignedshortx,y;2021/02/25362.整型变量的说明类型说明符变量名标识符,变量例2.3整型变量的定义和运算见教材P34例2.32021/02/2537例2.3整型变量的定义和运算见教材P34例2.320212.3.2实型变量单精度型float占4个字节内存,提供7位有效数字,双精度型double占8个字节内存,提供16位有效数字。整数没有误差,实数有精度,有误差,提供6位小数,7位有效数字。2021/02/25382.3.2实型变量单精度型float2021/2.实型变量的说明格式和书写规则同整型变量说明相同,如:floats,t;doubleh,k;2021/02/25392.实型变量的说明格式和书写规则同整型变量说明相同,2021例2.4实型数据的舍入误差main(){floata,b;a=123456.789e5;b=a+20;printf(“%f,%f”,a,b);}结果:12345678848.000000,12345678848.0000002021/02/2540例2.4实型数据的舍入误差main()结果:2021/02/误差原因分析b的理论值应是12345678920,而一个实型变量只能保证的有效数字是7位有效数字,后面的数字是无意义的,并不准确表示该数,从结果看出,把20加在后几位上,是无意义的,应当避免将一个很大的数与一个很小的数直接相加减,否则就会“丢失”小的数。与此类似,用程序计算1.0/3*3的结果并不等于1。2021/02/2541误差原因分析b的理论值应是1234567892.3.3字符变量字符变量用来存放字符常量,只能存放一个字符,占用1个字节内存。

字符变量定义如下:charc1,c2;2021/02/25422.3.3字符变量字符变量用来存放字符常量1.字符数据在内存中的存储将一个字符常量放到一个字符变量中,不是把该字符本身放到内存单元中,而是将该字符的相应的ASCⅡ代码存放在存储单元中,如字符‘a’的ASCⅡ代码为97,‘b’为98,9798c1c20110000101100010c1c1图2.32021/02/25431.字符数据在内存中的存储将一个字符常量放在内存中,字符数据以ASCⅡ码存储,它的存储形式与整数存储形式类似,C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型量。在输出时,允许把字符变量按整型量输出,也允许把整型变量按字符型量输出。注意:当整形变量按字符型量处理时,只有低八位参与处理。2021/02/2544在内存中,字符数据以ASCⅡ码存储,它的存例2.5向字符型变量赋以整型值main(){charc1,c2;c1=97;c2=98;printf(“%c,%c\n”,c1,c2);printf(“%d,%d\n”,c1,c2);}结果:a,b97,982021/02/2545例2.5向字符型变量赋以整型值main()2021/02/2.补充TurboC将字符变量中的最高位作为符号位,也就是将字符处理成带符号的整数,即signedchar型。它的取值范围是-128~127。如果使用ASCⅡ码为0~127间的字符,由于字节中最高位为0,因此用%d输出时,输出一个正整数。如果使用ASCⅡ码为128~255间的字符,由于在字节中最高位为1,用%d格式符输出时,就会得到一个负整数。例如:main(){charc=130;printf(“%d”,c);}得到-126。如果不想按有符号处理,可以将变量定义为unsignedchar类型,这时其取值范围是0~255。signedchar和unsignedchar相仿,但它只有一个字节。2021/02/25462.补充TurboC将字符变量中的例2.6main(){charc1=130;unsignedcharc2=130;printf(“c1=%d,c2=%d\n”,c1,c2);}结果:c1=-126,c2=1302021/02/2547例2.6main()结果:c1=-126,c2=1302022.3.4变量赋初值程序中常需要对一些变量预先设置初值。C语言允许在定义变量的同时使变量初始化,如inta=3;floatf=3.56;charc=‘a’;2021/02/25482.3.4变量赋初值程序中常需要对一些变也可以使被定义的变量的一部分赋初值,如:inta,b,c=5;如果对几个变量赋予初值3,应写成inta=3,b=3,c=3;不能写成:inta=b=c=3;inta=3;相当于:inta;a=3;2021/02/2549也可以使被定义的变量的一部分赋初值,如:2021/2.4运算符和表达式运算符是一些特定的符号,它用来对数据进行某些特定的操作;运算对象(操作数)是用来进行运算的数据,包括常量、变量等;表达式是用运算符将运算对象连接起来的式子。如1+2,1和2为运算对象,而1+2就是表达式。2021/02/25502.4运算符和表达式运算符是一些特定的符号,它用来对数据2.4.1运算符种类、优先级和结合性⑴算术运算符用于各类数值计算。运算符有:加(+)、减(-)、乘(*)、除(/)、求余(或称模运运算,%)、自增(++)、自减(--)。⑵关系运算符用于比较运算。运算符主要有:大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)。1.运算符的种类2021/02/25512.4.1运算符种类、优先级和结合性⑴算术运算符1.运⑶逻辑运算符用于逻辑运算。运算符有:与(&&)、或(||)、非(!)。⑷位操作运算符参与运算的量,按二进制位进行运算。运算符有:按位与(&)、按位或(|)、取反(~)、按位异或(^)、左移(<<)、右移(>>)。⑸赋值运算符用于赋值运算。赋值运算符有:简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)、复合位运算赋值(&=,|=,^=,<<=,>>=)等三类。2021/02/2552⑶逻辑运算符2021/02/2552⑹条件运算符是一个三目运算符,用于条件求值。运算符有:(?:)。⑺逗号运算符用于把若干表达式组合成一个表达式。运算符有:(,)。⑻指针运算符用于取内容(*)和取地址(&)两种运算。⑼求字节运算符用于数据类型所占的字节数(sizeof)。2021/02/2553⑹条件运算符2021/02/2553⑽强制类型转换运算符可以利用强制类型转换运算符将一个表达式转换成所需类型。其一般形式为:(类型名)(表达式)如(double)a;(int)(x+y);(float)(5%3)⑾其他运算符

其他运算符有:括号()、数组下标[]、成员运算符.和用指针访问结构体成员的指向运算符->。2021/02/2554⑽强制类型转换运算符2021/02/25542.运算符的运算优先级C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级低的进行运算。如求表达式x+y*z的值:y的值左侧为加号,右侧为乘号,而乘号优先于加号,因此相当于x+(y*z),即先进行乘法运算,然后再进行加法运算。2021/02/25552.运算符的运算优先级C语言中,运算符的运3.运算符的结合性C语言的运算符不仅具有不同的优先级,还有结合性的问题。在表达式的运算过程中,各运算对象参与运算的先后顺序不仅要遵循运算符优先级别的规定,还要受运算符结合性的制约,当一个运算对象两侧的运算符优先级别相同时,需按运算符的结合性来处理,以便确定是自左向右进行运算还是自右向左进行运算。2021/02/25563.运算符的结合性C语言的运算符不仅具有C语言中运算符的结合性分为两种:即左结合性(自左向右)和右结合性(自右向左)。例如:算术运算符就是左结合性的运算符表达式:x-y+z,运算对象y的左侧运算符“-”和右侧运算符“+”优先级相同,应按结合性来进行自左向右的运算,即先执行x-y运算,再执行+z的运算。

赋值运算符是右结合性的运算符表达式:x=y=z,由于赋值运算符“=”的右结合性,所以先执行y=z运算,再执行x=(y=z)运算。2021/02/2557C语言中运算符的结合性分为两种:即左结合性(优先级别运算符运算形式结合方向含义1()[].->(e)a[e]x.yp->x自左至右圆括号数组下标运算符结构体成员运算符指向结构体成员运算符2-++--!~(t)*&sizeof-e++x或x++!e~t(t)e*p&xsizeof(t)自右至左负号运算符自增运算符和自减运算符逻辑非运算符按位取反运算符强制类型转换运算符指针运算符,由地址求内容求变量地址的运算符求某类型变量的长度运算符3*/%e1*e2自左至右乘、除、求余运算符表2.2C语言各运算符的优先级别与结合方向2021/02/2558优先运算符运算形式结合方向含义1()(e)自左至右圆括号2-4+-e1+e2自左至右加法、减法运算符5<<>>e1<<e2自左至右左移、右移运算符6<<=>>=e1<e2自左至右关系运算符7==!=e1==e2自左至右等于、不等于运算符8&e1&e2自左至右按位与运算符9^e1^e2自左至右按位异或运算符10|e1|e2自左至右按位或运算符11&&e1&&e2自左至右逻辑与运算符12||e1||e2自左至右逻辑或运算符13?:e1?e2:e3自右至左条件运算符14=+=-=*=/=%=>>=<<=&=^=|=x=ex+=ex&=e自右至左赋值运算符15,e1,e2自左至右逗号运算符(顺序求值)续表2021/02/25594+-e1+e2自左至右加法、减法运算符5<<>⑴同一优先级的运算符优先级别相同,运算次序由结合方向决定;⑵不同的运算符要求有不同的运算对象个数如+(加)和-(减)为双目运算符,要求在运算符运算符两侧各有一个运算对象(如3+5、8-3等);而++(自增)和-(负号)运算符为单目运算符,只能在运算符的一侧出现一个运算对象(如-a、i++、--i、(float)i、sizeof(int)、*p等);条件运算符是C语言中唯一的三目运算符,如x?a:b。⑶从上述表中可以大致归纳出各类运算符的优先级:表2.2说明:2021/02/2560⑴同一优先级的运算符优先级别相同,运算次序由结合方向决定;表特殊运算符()[].->单目运算符算术运算符关系运算符逻辑运算符(不包括!)条件运算符赋值运算符逗号运算符

优先级别由上到下递减。特殊运算符优先级最高,逗号运算符优先级最低。位运算符的优先级比较分散(有的在算术运算符之前(如~),有的在关系运算符之前(如<<、>>),有的在关系运算符之后(如&、^、|))。2021/02/2561特殊运算符()[].->单目运算符算术运算符关2.4.2算术运算符和算术表达式

1.基本的算术运算符

基本的算术运算符有:加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)五种。

两个整数相除的结果为整数,如5/3的结果为1,舍去小数部分。但是,如果除数或被除数中有一个为负值,多数机器采取“向零取整”的方法,即5/3=1,-5/3=-1,取整后向零靠拢。

求余运算符“%”要求参与运算的量均为整型,运算结果等于两数相除后的余数,余数的符号取决于被除数的符号,如-100%3余数为-1,100%-3余数为1。2021/02/25622.4.2算术运算符和算术表达式1.基本的算术运算符

2.自增自减运算符++i,--i在使用i之前,先使i的值加(减)1i++,i--在使用i之后,再使i的值加(减)1

粗略地看,++i和i++的作用相当于i=i+1,但++i和i++不同之处在于++i是先执行i=i+1后,再使用i的值;而i++是先使用i的值后,再执行i=i+1。2021/02/25632.自增自减运算符++i,--i在使用i之前,先使i例2.6如果i的原值等于3,执行下面的赋值语句:①j=++i;(i的值先变为4,再赋给j,j的值为4)②j=i++;(先将i的值3赋给j,j的值变为3,然后i的值变为4)2021/02/2564例2.6如果i的原值等于3,执行下面的赋值语句例2.7P35例2.5main(){intc=5;printf(“%d,%d,%d\n”,c+=c++,c+8,++c);printf(“%d\n”,c+=c++,c+8,++c);}注意:TurboC规定,printf()函数中出现多个表达式输出项时,先按从右到左的顺序计算各表达式的值,然后再从左到右输出结果。本例中先计算++c,得c=6,然后计算c+8得14,最后计算c+=c++,得c=13。2021/02/2565例2.7P35例2.5注意:TurboC规定,printf1.有如下两个程序,试比较结果①

main(){inti=3;printf(“%d,%d\n”,(i++)+(i++)+(i++),i);}②

main(){inti=3,k;k=(i++)+(i++)+(i++);printf(“%d,%d\n”,k,i);}补充:①结果:12,3②结果:9,62021/02/25661.有如下两个程序,试比较结果补充:①结果:12,3②结果:2.当出现难以区分的若干个+或-组成运算符串时,C语言规定,自左向右取尽可以多的符号组成运算符。例如:设整型变量x,y均为3,则:x+++y应理解为(x++)+y,结果为6,x值为4,y值不变x---y应理解为(x--)-y,结果为0,x值为2,y值不变2021/02/25672.当出现难以区分的若干个+或-组成运算符串时,C语言规定,3.算术运算符的优先规则单目算术运算符(-、++、--)优先于*、/、%算术运算符优先于+、-算术运算符;同级单目算术运算符的结合性自右向左;同级双目算术运算符的结合性自左向右。2021/02/25683.算术运算符的优先规则单目算术运算符(-、++、--)优先

4.算术表达式用算术运算符和括号将运算对象连接起来的式子,称为算术表达式。例如下面的表达式为算术表达式:a*b/c-1.5+’a’如果一个算术运算符的两侧的数据类型不同,则按下面所述的内容先自动进行类型转换,使二者具有同一类型,然后再进行运算。2021/02/25694.算术表达式用算术运算符和括号将运算对各类数值型数据间的混合运算整型(包括int,short,long,unsignedint,unsignedshort,unsignedlong)和实型(包括float,double)数据可以混合运算。而字符型数据可以与整型通用,因此整型、实型和字符型数据间可以混合运算,在进行运算时,不同类型的数据要先换成同一类型,然后进行运算,转换规则如下图所示:2021/02/2570各类数值型数据间的混合运算整型(包括idoublefloatlongunsignedintchar,short高低图中横向向左的箭头表示必须的转换,如字符数据必须先转换为整数,short型转换为int,float型数据在运算时一律先转换为double型,以提高精度(即使是两个float型数据相加,也先都化成double型,然后再相加)。纵向的箭头表示当运算为不同类型时转换的方向。例如int型与double型数据进行运算,先将int型数据转换为double型,然后在两个同类型(double型)数据间进行运算,结果为double型。注意箭头方向只表示数据类型级别的高低,由低向高转换。不要理解为int型先转换为unsignedint型,再转成long型,再转成double型。如果一个int型数据与一个double型数据运算,是直接将int型转换成double型。2021/02/2571doublefloatlongunsignedintchar例2.8假设已指定i为int型变量,f为float型变量,d为double型变量,e为long型变量,有以下式子:10+‘a’+i*f-d/e在计算机执行时从左至右扫描,运算次序为:①进行10+‘a’的运算,先将‘a’转换为整数97,运算结果为107;②由于“*”比“+”优先,先进行i*f的运算。先将i与f都转换成double型,运算结果为double型;③整数107与i*f的结果相加。先将整数107转换成double型,再相加,结果为double型;④将变量e化为double型,d/e结果为double型;⑤将10+‘a’+i*f的结果与d/e的商相减,结果为double型。2021/02/2572例2.8假设已指定i为int型变量,f为flmain(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}结果:x=3.600000,i=3上述类型转换由系统自动进行的,另一种类型转换为强制类型转换。需要说明的是在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。如:(int)x;如果x原来指定为float型,进行强制类型运算后得一一个int型的中间变量,它的值等于x的整数部分,而x的类型不变(仍为float型)。见下例2.9:2021/02/2573main()结果:上述类型转换由系统自动进行2.4.3关系运算符和关系表达式所谓“关系运算”实际上是“比较运算”。将两个值进行比较,判断其比较的结果是否符合给定的条件。例如,a>3是一个关系表达式,大于号(>)是一个关系运算符,如果a的值为5,则满足给定的“a>3”条件,因此关系表达式的值为逻辑值“真”(即“条件满足”),用整数“1”来表示;如果a的值为2,不满足“a>3”的条件,则称关系表达式的值为逻辑值“假”,用整数“0”来表示。2021/02/25742.4.3关系运算符和关系表达式所谓“关系运算”实1.关系运算符及其优先次序C语言提供下面6种关系运算符:<(小于)<=(小于等于)>(大于)>=(大于等于)==(等于)!=(不等于)优先级相同(高)优先级相同(低)关于优先顺序:

⑴前4种关系运算符(<、<=、>、>=)的优先级别相同,后2种也相同。前4种高于后2种;

⑵关系运算符的优先级低于算术运算符;⑶关系运算符的优先级高于赋值运算符。2021/02/25751.关系运算符及其优先次序C语言提供下面6种关系运算符:例2.10例如:c>a+b等效于c>(a+b)a>b==c等效于(a>b)==ca==b<c等效于a==(b<c)a=b>c等效于a=(b>c)2021/02/2576例2.10例如:2021/02/2576用关系运算符将两个表达式(可以是算术表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的式子,称为关系表达式。关系表达式的值是一个逻辑值,即“真”或“假”。例如,关系表达式“5==3”的值为“假”,“5>=0”的值为“真”。C语言没有逻辑型数据类型,以1代表“真”,以0代表“假”。2.关系表达式2021/02/2577用关系运算符将两个表达式(可以是算术表达式、例2.11a=3,b=2,c=1,则:

关系表达式“a>b”的值为“真”,表达式的值为1;关系表达式“(a>b)==c”的值为“真”(因为a>b的值为1,等于c的值),表达式的值为1;关系表达式“b+c<a”的值为“假”,表达式的值为0;若有以下赋值表达式:

d=a>bd的值为1f=a>b>cf的值为0(因为“>”运算符是自左向右的结合方向,先执行“a>b”得值为1,再执行关系运算“1>c”,得值0,赋给f)。2021/02/2578例2.11a=3,b=2,c=1,则:2021/02/257例2.12P36例2.6main(){inta=5,b=3;floatx=3.14,y=6.53;printf(“%d,%d\n”,a+b!=a-b,x<=(y-=6.1));}结果:1,02021/02/2579例2.12P36例2.6main()结果:1,02022.4.4逻辑运算符C语言提供的逻辑运算符有三种:&&(逻辑与)、||(逻辑或)、!(逻辑非)。“&&”和“||”为双目运算符,它要求有两个运算量,如(a>b)&&(x>y),(a<b)||(x>y)。“!”是单目运算符,只要求有一个运算量,如!(a>b)。1.逻辑运算符及其优先次序2021/02/25802.4.4逻辑运算符C语言提供的逻辑运算符逻辑运算举例如下:a&&b若a、b为真,则a&&b为真。a||b若a、b之一为真,则a||b为真。!a若a为真,则!a为假。ab!a!ba&&ba||b真真假假真真真假假真假真假真真假假真假假真真假假表2.3逻辑运算的真值表2021/02/2581逻辑运算举例如下:ab!a!ba&&ba||b真真假假真真真在一个逻辑表达式中如果包含多个逻辑运算符,如!a&&b||x>y&&c,按以下的优先顺序和结合性:!优先于双目算术运算符优先于关系运算符优先于&&优先于||;单目逻辑运算符!和单目算术运算符同级别,结合性自右向左;双目逻辑运算符的结合性是自左向右。2021/02/2582在一个逻辑表达式中如果包含多个逻辑运算符2.逻辑表达式如前所述,逻辑表达式的值应该是一个逻辑量“真”或“假”。C语言编译系统给出逻辑运算结果时,以数值1代表“真”,以0代表“假”,但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。即将一个非0的数值认作“真”。例如:若a=4,则!a的值为0。因为a的值为非0,被认作“真”,对它进行“非”运算,得“假”,“假”以0来代表。2021/02/25832.逻辑表达式如前所述,逻辑表达式的值应该是若a=4,b=5,则a&&b的值为1。因为a和b均为非0,被认为是“真”,因此a&&b的值也为“真”,值为1。a、b值同前,a||b的值为a、b值同前,!a||b的值为4&&0||2的值为结论:由系统给出的逻辑运算结果不是就是1,不可能是其他数值。而在逻辑表达式中作为参加逻辑运算的运算对象可以是0(“假”)或任何非0的数值(按“真”)对待。如果在一个表达式中不同位置上出现数值,应区分哪些是作为数值运算或关系运逄的对象,哪些作为逻辑运算的对象。例如1112021/02/2584若a=4,b=5,则a&&b的值为1。因为a和b均为非0,被5>3&&8<4-!0表达式自左到右扫描求解。首先处理“5>3”(因为关系运算符优先于&&)。在关系运算符两侧的5和3作为数值参加关系运算,“5>3”的值为1。再进行“1&&8<4-!0”运算,8的左侧为“&&”,右侧为“<”运算符,根据优先规则,应先进行“<”的运算,即先进行“8<4-!0”的运算。现在4的左侧为“<”,右侧为“-”运算符,而“-”优先于“<”,因此应先进行“4-!0”的运算,由于“!”级别高,因此先进行“!0”的运算,得到结果1。然后进行“4-1”的运算,得结果3,再进行“8<3”的运算,得结果0,最后进行“1&&0”的运算,得到结果0。2021/02/25855>3&&8<4-!02021/02/2585注意

在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。a&&b&&c只有a为真(非0)时,才需在判断b的值,只有a和b都为真的情况下才需在判别c的值。只要a为假,就不必判别b和c(此时整个表达式已确定为假)。如果a为真,b为假,不判别c。a||b||c只要a为真(非0),就不必判断b和c;只有a为假,才需要判别b;a和b都为假才判别c。2021/02/2586注意在逻辑表达式的求解中,并不是所有的逻辑运算例2.13main(){intw=1,x=2,y=3,z=4,a=5,b=6,c;c=(a=w>x)&&(b=y>z);printf(“a=%d,b=%d,c=%d\n”,a,b,c);}结果:a=0,b=6,c=0main()

{intm,n,l,a,b,c,d;m=n=a=b=c=d=0;l=(m=a==b)||(n=c==d);printf(“m=%d,n=%d,l=%d\n”,m,n,l);}结果:m=1,n=0,l=12021/02/2587例2.13main()2021/02/25872.4.5赋值运算符和赋值表达式1.简单赋值运算符赋值符号“=”就是赋值运算符,它的作用是将一个数据赋给一个变量。如“a=3”的作用就是执行一次赋值运算,把常量3赋给变量a。也可以将一个表达式的值赋给一个变量。如:x=a+b*c。2021/02/25882.4.5赋值运算符和赋值表达式1.简单赋值运算符2021/2.复合赋值运算符在赋值符“=”之前加上某些二目运算符可构成复合赋值运算符。复合算术赋值运算符有:+=、-=、*=、/=、%=五种。复合位运算赋值运算符有:<<=、>>=、&=、^=、|=五种。2021/02/25892.复合赋值运算符在赋值符“=”之前加上某些3.赋值表达式由赋值运算符将一个变量和一个表达式连接起来的的式子称为“赋值表达式”。其一般形式为:

<变量><赋值运算符><表达式>赋值表达式的求解过程:将赋值运算符右侧的“表达式”的值赋给左侧的变量,赋值表达式的值就是被赋值的变量的值。如“a=5”这个赋值表达式的值为5(变量a的值也为5)。2021/02/25903.赋值表达式由赋值运算符将一个变量和一个表达上述赋值表达式的一般形式中的“表达式”,又可以是一个赋值表达式。如a=(b=5),括号内的“b=5”是一个赋值表达式,它的值等于5。“a=(b=5)”相当于“b=5”和“a=b”两个赋值表达式,因此a的值等于5,整个赋值表达式的值也等于5。我们知道赋值运算符按照“自右向左”的结合顺序,因此,“b=5”外面的括号可以不要,即“a=(b=5)”和“a=b=5”等价,都是先求“b=5”的值(得5),然后再赋给a,下面举几个例子:2021/02/2591上述赋值表达式的一般形式中的“表达式”,又可以是一个a=b=c=5(赋值表达式值为5,a、b、c值均为5)a=5+(c=6)(表达式值为11,a值为11,c值为6)a=(b=4)+(c=6)(表达式值为10,a值为10,b值为4,c值为6)a=(b=10)/(c=2)(表达式值为5,a值为5,b值为10,值为2)2021/02/2592a=b=c=5(赋值表达式值为赋值表达式中可包含复合的赋值运算符。如:a+=a-=a*a,如果a的初值为12,此赋值表达式的求解步骤如下:a)先进行“a-=a*a”运算,它相当于a=a-a*a=12-144=-132;b)再进行“a+=-132”运算,相当于a=a+(-132)=-132-132=-264。2021/02/2593赋值表达式中可包含复合的赋值运算符。如:a+=a-=补充

如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。将实型数据(包括单、双精度)赋给整型变量时,舍弃实数的小数部分。如i为整型变量,执行“i=3.56”的结果是使i的值为3,在内存中以整数形式存储。将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中,如将23赋给float变量f,即f=23,先将23转换成23.00000,再存储在f中。如将23赋给double型变量d,即d=23,则将23补足有效位数字为23.000,然后以双精度浮点数形式存储到d中。2021/02/2594补充如果赋值运算符两侧的类型不一致将一个double型数据赋给float变量时,截取前面7位有效数字,存放到float变量的存储单元中,但应注意数值取值范围不以溢出。字符型数据赋给整型变量时,由于字符只占有1个字节,而整型变量占2个字节,因此将字符数据(8位)放到整型变量低8位中,整型变量高8位有两种情况:

①若是将unsignedchar数据赋给整型变量,高8位补0。②若是将char数据赋给整型变量,如果字符最高位为0(0~127),则整型变量高8位补0;如果字符最高位为1(-128~-1),则整型变量高8位补1。2021/02/2595将一个double型数据赋给float变量时,截取前面7位有将一个int、short、long型数据赋给一个char型变量时,只将其8位原封不动地送到char型变量(即截断)。将int型数据赋给long型变量时,要进行符号扩展,将整型数据的16位送到long型低16位中,如果int型数据为正值(符号位为0),则long型变量的高16位补0;如果int型变量为负值(符号位为1),则long型变量的高16位补1,以保持数值不变。将unsignedint型数据赋给long型变量时,不存在符号扩展问题,只需将高位补0。将一个unsigned类型数据赋给一个占字节数相同的signed变量(如:unsignedint=>int,unsignedlong=>long,unsignedshort=>short,unsignedchar=>char),将unsigned型数据的2021/02/2596将一个int、short、long型数据赋给一个char型变内存中各位原样送到signed型变量中,若unsigned类型数据未超过要赋值的变量的范围,则signed型变量值与unsigned型数据值相同;若超过,要根据补码知识进行转换。如:main(){unsignedinta=65535;intb;b=a;printf(“%d”,b);}结果输出-12021/02/2597内存中各位原样送到signed型变量中,若unsigned将signed型数据赋给所占字节相同的unsigned型变量,同样将signed型数据所占内存的各位原样送到unsigned型变量内存中,若signed型数据为非负值,则unsigned型变量值与signed型数据值相同;若为负值,要根据补码知识进行转换。如:main(){unsigneda;intb=-1;a=b;printf(“%u”,a);}结果输出65535。2021/02/2598将signed型数据赋给所占字节相同的uns2.4.6条件运算符和条件表达式1.条件运算符条件运算符要求有3个操作对象,它是C语言中唯一的三目运算符。条件运算符的优先级规则:其他运算符优先于条件运算符,条件运算符优先于赋值运算符和逗号运算符;条件运算符的结合性是自右向左。2021/02/25992.4.6条件运算符和条件表达式1.条件运算符2021/02.条件表达式用条件运算符构成的表达式称为条件表达式,其一般形式为:表达式1?表达式2:表达式3条件表达式的执行顺序是:先计算表达式1的值,若值为非0(真),则计算表达式2的值,并将表达式2的值作为整个条件表达式的结果;若表达式1的值为0(假),则计算表达式3的值,并将表达式3的值作为整个条件表达式的结果。2021/02/251002.条件表达式用条件运算符构成的表达式称为条例2.14main(){inta=1,b=2,c=3,d=4,e;e=a>b?a:c<d?c:d;printf(“%d\n”,e);}条件运算符的结合方向为“自右向左”。所以条件表达式a>b?a:c>d?c:d相当于a>b?a:(c>d?c:d)。2021/02/25101例2.14main()条件运算符的结合方向为“自右向左”。所2.4.7逗号运算符和逗号表达式C语言中提供了一种特殊的运算符——逗号运算符。它用来将两个表达式连接起来组成一个表达式,如3+5,6+8称为逗号表达式。其一般形式为:

表达式1,表达式2其求解过程是:先求解表达式1,再求解表达式2,并将表达式2的值作为整个逗号表达式的值。如上面的逗号表达式“3+5,6+8”的值为14,又如2021/02/251022.4.7逗号运算符和逗号表达式C语言中提供了一种a=3*5,a*4由表2.2可知:赋值运算符的优先级别高于逗号运算符,因此应先求解a=3*5这个赋值表达式,计算得这个赋值表达式值为15,再求解a*4这个表达式,得60,整个逗号表达式的值为60。一个逗号表达式又可以与另一个表达式组成一个新的表达式,所以逗号表达式的一般形式可扩展为:

表达式1,表达式2,表达式3……表达式n

顺序求解这n个表达式,整个表达式值为表达式n的值。2021/02/25103a=3*5,a*42021/02/25103请注意并不是任何地方出现的逗号都是作为逗号运算符,例如变量说明:inta,b,c;函数参数:printf(“%d,%d,%d”,a,b,c);其中的“a,b,c”并不是一个逗号表达式,它是printf函数的3个参数。2021/02/25104请注意并不是任何地方出现的逗号都是作为逗号运算符,例如2022.4.8位运算符和位运算1.“按位与”运算符(&)参与运算的两个数,按二进位进行“与”运算。如果两个相应的二进位都为1,则该位的结果值为1,否则为0。即:

0&0=0;0&1=0;1&0=0;1&1=12021/02/251052.4.8位运算符和位运算1.“按位与”运算符(&)2022.“按位或”运算符(|)参与运算的两个数,按二进位进行“或”运算。如果两个相应的二进位只要一个为1,则该位的结果值为1,即:

0&0=0;0&1=1;1&0=1;1&1=12021/02/251062.“按位或”运算符(|)2021/02/251063.“按位异或”运算符(^)异或运算符^也称XOR运算符。它的规则是若参加运算的两个二进位相异时,结果位为1。即

0^0=0;0^1=1;1^0=1;1^1=02021/02/251073.“按位异或”运算符(^)2021/02/251072.4.8位运算符和位运算4.“按位取反”运算符(~)~是一个单目运算符,用来对一个二进制数按位取反,即将0变为1,1变为0。2021/02/251082.4.8位运算符和位运算4.“按位取反”运算符(~)20例2.15教材P37例2.92021/02/25109例2.15教材P37例2.92021/02/25109第三章输入和输出所谓输入输出是以计算机主机为主体而言的,从计算机向外部输出设备(如显示屏、打印机、磁盘等)输出数据称为“输出”,从外部由输入设备(如键盘、磁盘、光盘、扫描仪等)输入数据称为“输入”。一个完整的程序都应该有数据的输入输出功能,没有输出功能是无用的,因为程序运行的结果看不见;没有输入功能则程序缺乏灵活性,每次运行都只能对相同的数据执行操作,所以输入输出是程序中不可缺少的部分。2021/02/25110第三章输入和输出所谓输入输出是以计算机C语言中输入和输出都是由函数来实现的,C提供的函数以库的形式存放在系统中(如输入输出函数库、数学函数库、字符函数库、字符串函数库等),每个函数库含有若干个函数,C语言提供了一批标准输入输出函数,其中有putchar(输出字符)、getchar(输入字符)、printf(格式输出)、scanf(格式输入)、puts(输出字符串)、gets(输入字符串),本章中介绍前四个最基本的输入输出函数。2021/02/25111C语言中输入和输出都是由函数来实现的,C提供的在使用C语言库函数时,要用文件包含命令“#include”将有关的“头文件”包括到用户的源文件中,在头文件中包含了要用到的函数有关的一些信息,如变量的定义和宏定义。例如使用标准输入输出库函数时,要用到“stdio.h”文件,stdio是standardinput&output的缩写,文件后缀“h”是head的缩与,#include命令都是放在程序的开头,因些这类文件又被称为“头文件”,在调用标准输入输出库函数时,程序开头应用以下文件包含命令:#include<stdio.h>考虑到printf和scanf函数使用频繁,系统允许在使用这两个函数时可不加#include命令。2021/02/25112在使用C语言库函数时,要用文件包含命令“#in3.1字符的输入输出函数C语言提供了两个标准的字符输入输出函数putchar和getchar,在使用这两个函数时,在程序的头部一定要加上下面的文件包含命令:#include<stdio.h>2021/02/251133.1字符的输入输出函数C语言提供了两个标准的3.1.1字符输出函数(putchar)putchar函数的作用是向终端(显示屏)输出一个字符,其一般形式为

putchar(ch);意思是在显示屏上输出括号内字符变量ch所代表的字符,ch可以是字符数据(常量或变量)和整型数据(常量或变量)。2021/02/251143.1.1字符输出函数(putchar)putc例3.1教材P49例3.7#include<stdio.h>main(){chara=‘Y’;b=‘e’;putchar(a);putchar(b);putchar(‘s’);putchar(‘\n’);putchar(‘\141’);}Yesa结果:2021/02/25115例3.1教材P49例3.7Yesa结果:2021/02/253.1.2字符输入函数(getchar)getchar函数的作用是从终端(键盘)设入一个字符。其一般形式为:

getchar();getchar()只能接收一个字符,该字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量,作为表达式的一个运算对象参加表达式的运算处理。2021/02/251163.1.2字符输入函数(getchar)ge例3.2教材P50例3.8#include<stdio.h>main(){charc;c=getchar();putchar(c);}例3.3教材P50例3.9#include<stdio.h>main(){intc;c=getchar();c>=‘a’&&c<=‘z’?putchar(c+‘A’-‘a’):putchar(c);}2021/02/25117例3.2教材P50例3.82021/02/251173.2格式输入输出函数C语言提供了两个标准的格式输入输出函数,即格式输入函数scanf和格式输出函数printf。字符输入输出函数只能输入输出单个字符,而格式输入输出函数可按指定的格式输入输出若干个任意类型的数据。2021/02/251183.2格式输入输出函数C语言提供了两个标准3.2.1格式输出函数(printf)printf函数作用是按用户指定的格式,把若干个任意类型的数据输出到显示屏上。其一般形式为

printf(“格式控制字符串”,输出表列);格式控制字符串用来指定输出的格式,它由格式字符串和非格式字符串两大类组成。2021/02/251193.2.1格式输出函数(printf)pri格式字符串是以%开头的字符串,用来指定输出数据的类型、形式、长度、小数位数等。非格式字符串包括普通字符(原样输出)和转义字符(如\n、\t、\r、\101等)。输出表列表示要输出的各个数据项,要求格式字符串和各输出项在数量和类型上应该一一对应。2021/02/25120格式字符串是以%开头的字符串,用来指定输出数据1.格式字符串格式字符串的一般形式为:%[标志][输出最小宽度][.精度][长度]类型类型:指定输出数据的类型格式符意义d以十进制形式输出有符号整数(正数不输出符号)o以八进制形式输出无符号整数(不输出前缀0)x以十六进制形式输出无符号整数(不输出前缀0x)u以十进制形式输出无符号整数(不输出符号)c输出单个字符2021/02/251211.格式字符串格式符意义d以十进制形式输出有符号整数(正数不s输出字符串f以小数形式输出单、双精度实数e以指数形式输出单、双精度实数g以%f和%e中较短宽度输出单、双精度标志:有-、+、#、0四种标志意义-输出结果左对齐,右边补空格+输出符号(正号或负号)#对c,s,d,u无影响;对o在输出时加前缀0;对x在输出时加ox;0输出结果右对齐时,左边空格用0代替2021/02/25122s输出字符串f以小数形式输出单、双精度实数e以指数形式输出单输出最小宽度:用十进制正整数来表示输出的最小位数,若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。精度:以“.”开头,后跟十进制正整数,如果输出实数,则表示小数的位数;如果输出字符串,则表示输出字符的宽度,若实际小数位数大于所定义的精度数,要截去超过的部分。长度:格式符“l”表示按长整型输出。2021/02/25123输出最小宽度:用十进制正整数来表示输出的最小位数,若实际位数例3.4main(){unsignedinta=65535;intb=-2;printf(“a=%d,%o,%x,%u\n”,a,a,a,a);printf(“b=%d,%o,%x,%u\n”,b,b,b,b);}结果:a=-1,177777,ffff,65535b=-2,177776,fffe,655342021/02/25124例3.4main()结果:a=-1,177777,ffff,

例3.5字符串的输出main(){printf(“%3s,%7.2s,%.4s,%-5.3s\n”,“china”,“china”,“china”,”china”);}结果:china,ch,chin,chi2021/02/25125例3.5字符串的输出main()结果:china,例3.6输出实数时指定小数位数main(){floatf=123.456;printf(“%f%10f%10.2f%.2f%-10.2f\n”,f,f,f,f,f);}结果:123.456001123.456001123.46

123.46

123.462021/02/25126例3.6输出实数时指定小数位数main()结果:2021/03.2.2格式输入函数(scanf)scanf函数作用是按用户指定的格式从键盘上把数据输入到指定的变量中。其一般形式为:scanf(“格式控制字符串”,地址表列);格式控制字符串是用来指定要输入的数据的格式,地址表列给出要赋值的各变量的地址,地址由地址运算符“&”后加变量名构成,如&a表示变量a的地址。2021/02/251273.2.2格式输入函数(scanf)scanf1.格式字符

温馨提示

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

最新文档

评论

0/150

提交评论