版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章C语言数据与运算第2章C语言数据与运算2.1.1C语言的数据类型2.1.2进制与进制转换2.1.3整数类型2.1.4实数类型2.1.5字符类型2.1数据类型第2章C语言数据与运算计算机中的数据信息,如文字、图像、声音等,都是使用二进制数来存放的。那么计算机是如何区分这些信息的呢?这取决于计算机如何解释这些二进制数据。如一段二进制数据01100001,如果解释为整型数据是97,如果解释为字符型数据是'a'。数据类型是指数据在内存中的表现形式,不同的数据类型在内存中的存储方式是不同的,在内存中所占的字节数也是不同的。C语言程序中所用到的每一个常量、变量和函数等程序的基本操作对象都有一种数据类型与之相联系,人们根据实际需要,将数据分为了不同的类型,在C语言中,数据类型可分为基本类型、构造类型、指针类型、空类型四大类,如图2.1所示。2.1数据类型2.1.1C语言的数据类型第2章C语言数据与运算1.基本类型基本类型最主要的特点是其值不可以再分解为其他类型,主要为整型、字符型和实型(浮点型)。2.构造类型构造类型是根据已定义的一个或多个数据类型用构造的方法来定义的。也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”,每个“成员”又是一个基本类型或一个构造类型。在C语言中,构造类型有数组类型、结构体类型、共同体(联合)类型和枚举类型4种。3.指针类型指针类型是一种特殊的、具有重要作用的数据类型,其值用来表示某个变量在内存储器中的地址。虽然指针变量的取值类似于整型量,但这是两个类型完全不同的量,因此不能混为一谈。4.构造类型调用函数时,通常应向调用者返回一个函数值,这个返回的函数值是具有一定的数据类型的。有一类函数,调用后并不需要向调用者返回函数值,这种函数可以定义为“空类型”,其类型说明符为void。2.1数据类型2.1.1C语言的数据类型第2章C语言数据与运算在计算机中数据是以二进制形式存放的,但实际上,不管用使用哪种形式来表示数据,数据本身是不会发生变化的,不同进制的数据是可以相互转换的。1.进制进制是一种计数机制,在C语言程序中常用的进制有二进制、八进制、十进制和十六进制。(1)二进制。在绝大多数计算机系统中,数据通常是以二进制的形式存在的。二进制是一种“逢二进一”的进制,它用0和1两个符号来描述。当用二进制表示十进制数字2时,由于二进制的符号只有0和1,因此根据“逢二进一”的规则,需要向高位进一位,表示为0010。同理,使用二进制表示十进制数字4时,继续向高位进一位,表示为0100。(2)八进制。八进制是一种“逢八进一”的进制,它由0~7共8个符号来描述。在C语言中添加前缀数字0以表示八进制数。当使用八进制表示十进制数字8时,由于表示八进制的符号只有0~7,因此根据“逢八进一”的规则,需要向高位进一位,表示为010。同理,使用八进制表示十进制数字16时,继续向高位进一位,表示为020。(3)十六进制。十六进制是一种“逢十六进一”的进制,它由0~9、A~F共16个符号来描述。在C语言中添加前缀数字0和字母X(或x)以表示十六进制数。当使用十六进制表示十进制数字16时,由于表示十六进制的符号只有0~9、A~F,因此根据“逢十六进一”的规则,需要向高位进一位,表示为0X10。同理,使用十六进制表示十进制数字32时,继续向高位进一位,表示为0X20。2.1数据类型2.1.2进制与进制转换第2章C语言数据与运算2.进制转换计算机中的一个数值可以用不同的进制形式来表示,十进制数0~15与二进制数、八进制数以及十六进制数的对应关系,如表2.1所示。2.1数据类型2.1.2进制与进制转换第2章C语言数据与运算(1)二进制、八进制、十六进制数转换为十进制数。二进制、八进制、十六进制数转换为十进制数的规律是相通的,通常采用“按权求和”的方法,即把二进数(或八进制、十六进制数)按位权的形式展开为多项式和的形式,求其最后的和就是其对应的十进制数。2.1数据类型2.1.2进制与进制转换第2章C语言数据与运算(2)十进制数转换为二进制、八进制、十六进制数。将一个十进制数转换为二进制数,需要将整数部分和小数部分分别转换,再加以合并。将十进制整数转换成二进制数通常采用“除2取余法”,即用2整除十进制整数,求得一个余数,再用2整除商,求得第2个余数,如此进行,直到商小于1时为止。把先得到的余数作为二进制的低位有效位,后得到的余数作为二进制的高位有效位,依次排列就求出了二进制数的整数部分。将十进制小数转换成二进制小数采用“乘2取整”法,即用2乘十进制小数,将积的整数部分取出,再用2乘余下的小数部分,再将积的整数部分取出,如此进行,直到乘积中的小数部分为零为止。然后把先取出的整数作为二进制小数的高位有效位,后取出的整数作为二进制小数的低位有效位,依次排列就求出了二进制数的小数部分。如果乘积中的小数部分总不为零,那步骤进行到达到题目所要求的精度即可。2.1数据类型2.1.2进制与进制转换第2章C语言数据与运算【实例2.5】将25转换为八进制数。解:25÷8=3 余数为13÷8=0 余数为3所以25=(31)8【实例2.6】将25转换为十六进制数。解:25÷16=1 余数为91÷16=0 余数为1所以25=0X192.1数据类型2.1.2进制与进制转换第2章C语言数据与运算(3)二进制数与八进制数的转换。二进制数转换为八进制数,通常采用“取三合一法”,即以二进制的小数点为分界点,将二进制数整数部分从右向左、小数部分从左向右,每3位分一组(如果整数最高位或小数最低位分组内的数据不足3位,可以填0以凑足3位)。每组中的3位二进制按权求和相加就得到1位八进制数。将各组依次得到的数字连接起来,就构成对应的八进制数。2.1数据类型2.1.2进制与进制转换第2章C语言数据与运算(4)二进制数与十六进制数的转换。二进制转换为十六进制,通常采用“取四合一法”,即以二进制的小数点为分界点,将二进制数整数部分从右向左、小数部分从左向右,每4位分一组(如果整数最高位或小数最低位分组内的数据不足4位,可以填0以凑足4位)。每组中的4位二进制按权求和相加就得到1位十六进制数。将各组依次得到的数字连接起来,就构成对应的十六进制数。2.1数据类型2.1.2进制与进制转换第2章C语言数据与运算C语言提供了多种整数类型,如基本整型、长整型、短整型、无符号型、无符号长整型等,以适应不同应用需求。各类整型数据的区别在于:采用不同位数的二进制编码表示,占用不同的存储空间,表示不同的数值范围。以常用的32位计算机系统为例,各类整数类型名、类型标识符、占据的字节数以及取值范围,如表2.2所示。2.1数据类型2.1.3整数类型第2章C语言数据与运算整数分为有符号数和无符号数。有符号定点数在计算机中是以二进制形式表示的,有3种表示方法,即原码、反码和补码。3种表示方法均由符号位和数值位两部分构成。符号位在最高位,用0表示“正”,用1表示“负”;其余位是数值位。3种表示方法各不相同。原码:按照二进制的方法来表示数的绝对值。用这样的表示方法得到的就是数的原码。反码:正数的反码与其原码相同;负数的反码为其原码除符号位以外的各位按位取反。补码:正数的补码与其原码相同;负数的补码是将其原码除符号位以外的各位求反之后,在末位再加1。下面以机器字长为8位二进制数为例,列举几个十进制数对应的二进制原码、反码、补码,如表2.3所示。2.1数据类型2.1.3整数类型第2章C语言数据与运算(2)正数的原码、反码、补码均相同。负数的补码,除符号位外,各位求反之后在末位加1,就得到了其原码。如果加1之后有进位,要往前进位,包括符号位。补码与原码相互转换,其运算过程是相同的。例如,(1)中例子的运算结果为10000010,将数值位取反之后加1为:11111110,即-126的原码。为表述简单,表2.3的二进制数据是以8位机系统为例,32位机系统的情况以此类推即可。2.1数据类型2.1.3整数类型第2章C语言数据与运算2.1数据类型2.1.4实数类型第2章C语言数据与运算2.1数据类型2.1.5字符类型第2章C语言数据与运算2.2.1常量和符号常量2.2.2变量2.2常量与变量第2章C语言数据与运算在C语言中,对于基本类型数据,按其取值是否可改变又分为常量和变量两种。在程序执行过程中,值不发生改变的量称为常量,值可变的量称为变量。它们可与数据类型结合起来分类,例如,可分为整型常量、整型变量、浮点常量、浮点变量、字符常量及字符变量。在程序中,常量是可以不经说明而直接引用的,而变量则必须先定义后使用。1.标识符和关键字(1)标识符是对变量名、函数名、标号和其他各种用户定义的对象的命名。命名规则:标识符由字母、数字或者下画线组成,且第一个字符必须是字母或下画线。注意:标识符区分大小写。标识符的有效长度取决于具体的C语言编译系统。标识符的书写一般采用具有一定实际含义的单词,这样可提高程序的可读性。标识符不能与C语言的关键字相同,也不能与自定义函数或C语言库函数相同。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算(2)关键字是具有固定名字和特定含义的特殊标识符,也称保留字,不允许程序设计者将它们另做别用。C语言中有如下大约32个关键字。①数据类型定义:typedef。②数据类型:char,double,enum,float,int,long,short,struct,union,unsigned,void,signed,volatile,auto,extern,register,static,const。③运算符:sizeof。④语句:break,case,continue,default,do,else,for,goto,if,return,switch,while。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算2.直接常量直接常量包括整型常量、实型常量、字符常量、字符串常量和符号常量。(1)整型常量。整型常量就是整常数,在C语言中有如下3种表示形式。①十进制整常数。例如:56、-101、8等。②八进制整常数。例如:016(十进制数14)、0177777(十进制数65535)、-010(十进制数-2)等是合法的八进制数。常数126(无前缀0)、019(包含了非八进制数码9)不是合法的八进制数。③十六进制整常数。例如:0X2A(十进制数42)、0x1AB0(十进制数6832)、0XFFFF(十进制数65535),都是合法的十六进制数。3B(无前缀)、0X2H(包含了非十六进制数码H)不是合法的十六进制数。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算(2)实型常量。实数在C语言中又称浮点数。实数有以下两种表示方法。①小数形式。由数字0~9和小数点组成(注意必须有小数点)。例如:0.0、36.5、1.34、22.12、-38.44等均为合法的实型常量。②指数形式。由十进制数加阶码标志小写字母“e”(或大写字母“E”)和阶码(必须是整数)组成。其中,字母e(E)前面必须有数字,后面必须是整数。例如,4.2E5表示4.2x105,3.8e-3表示3.8x10-3,-2.7E-2表示-2.7x10-2。以下不是合法的实型常量。1)456(无小数点)。2)E5(阶码“E”之前无数字)。3)23.-E2(负号的位置不对)。4)3.8E(无阶码)。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算(3)字符常量。字符常量是用一对单撇号(西文单引号)括起来的一个字符。例如,'a'、'C'、'='、'?'、'8'都是字符常量。在计算机中,字符常量有以下特点。①字符常量只能用单引号括起来,不能用双引号或其他符号括起来。②字符常量只能是单个字符,不能是多个字符。③字符可以是字符集中的任意字符。字符集是一个允许使用的字符的集合,在大部分计算机上广泛采用的是ASCII编码字符集。常用字符与ASCII码对照表见附录A。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算大家不必全部记住所有字符的ASCII值,只需要了解一些ASCII码的基本知识即可。标准ASCII码有128个字符,其中需要注意的有以下几点。①码值0~31为控制字符(不可显示字符),它们有特殊的用途。例如,回车换行、文件结束标志、字符串结束标志等。②码值32为空格符编码,被认为是可以显示字符中码数最小的字符。③10个阿拉伯数字0~9的码值是连续的。④26个英文字母分为大小写。大写字母A~Z、小写字母a~z是连续的。由于大写字母Z和小写字母a之间还有6个其他字符,所以大小写字母之间的转换要通过加(减)32来实现。⑤上面这些字符的ASCII值大小顺序如下。空格<数字<大写字母<小写字母由于字符常量在计算机中是以ASCII码形式存储的,因此,它可以参与各种运算。1)'B'-'A'值为1(字符'’B'的ASCII值66减去字符'A'的ASCII值65结果为1);2)'A'+2值为67(字符'A'的ASCIII值65加上2,等于字符'C'的ASCII值67);3)'b'-32值为66(字符'b'的ASCII值98减去32等于66,是字符'B'的ASCII值);4)'9'-'0'的值为9(字符'9'的ASCII值57减去字符'0'的ASCII值48等于9);5)'c'<'d'的值为True(字符'c'的ASCII值小于字符'd'的ASCII值)。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算⑥在C语言中,还有一些字符比较特殊,不可视或者无法通过键盘输入。如换行符、回车符等。解决的办法是由一个反斜杠(\)后跟规定字符构成,具有特定含义,称为转义字符。在程序的编译过程中,转义字符是作为一个字符处理的,存储时占用1个字节。常用的转义字符的定义,如表2.4所示。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算【实例2.11】转义字符的使用。
程序代码如下。#include<stdio.h>voidmain(){printf("\"verygood!\"\n");printf("My\thouse.\n");printf("Iamhap\160\x79.\n");printf("Whereare\b\b\bareyou?\n");}程序运行结果如下。"verygood!"Myhouse.Iamhappy.Whereareyou?2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算(4)字符串常量。字符串常量简称字符串,是用一对双撇号(西文双引号)括起来的一串字符。字符的个数称为字符串的长度。如"Hello"、"a"、"C语言"都是字符串常量。字符串常量和字符常量的区别如下。①字符常量是由单引号括起来的字符,而字符串常量是由双引号括起来的字符。尽管'a'与"a"都含有一个字符,但在C程序中,它们具有不同的含义。②字符常量只能是一个字符,字符串常量可以包含零个或多个字符。③可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。④字符常量占1个字节内存空间,字符串常量所占内存的字节数等于其字符的个数加1。在字符串结尾,计算机自动加上字符'\0',表示该字符串的结束。因此,字符串常量的存储单元个数要比字符串中字符的个数多1。例如,字符串常量"a"在内存中占2个字节,分别存储'a'和'\0'。字符串"Thisisacup"字符个数为13,但占用14个字节,最后一个字节存放'\0'。字符个数为0的空串""实际上也存了一个字符'\0'。由于字符'\0'的ASCII值为0,因此可以作为检查字符串是否结束的标志。在C语言中没有专门的字符串变量,可以用一个字符型数组存放一个字符串。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算(5)符号常量。在C语言程序中,可以用一个标识符来代表一个常量,该标识符叫作符号常量。定义符号常量,通常使用编译预处理命令define。其语法结构为:#define标识符常量其中,#define是一条预处理命令(预处理命令都以“#”开头),其作用是把该标识符定义为后面的常量值。符号常量一般用大写字母表示,以便与其他标志相区别。符号常量要先定义后使用。符号常量一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。例如:#defineNUM100//定义符号常量NUM#definePI3.14159//定义符号常量PI2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算【实例2.12】使用符号常量计算半径为10的圆的周长和面积。程序代码如下。#include<stdio.h>#definePI3.14voidmain(){printf("圆的周长是:%f\n",2*PI*10);printf("圆的面积是:%f\n",PI*10*10);}程序运行结果如下。圆的周长是:62.800000圆的面积是:314.0000002.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算提示:①一个#define命令只能定义一个符号常量,且用一行书写,不用分号结尾。②符号常量一旦定义,就可以在程序中代替常量使用。由于是常量,所以符号常量在其作用域内不能再被修改或赋值。例如:#defineNUM100intmain(){NUM=10;//编译时会提示错误,符号常量NUM的值不能再被修改}③使用符号常量,增强了程序的可读性和可维护性。当程序中多处使用同一个常量时,如果需要修改该常量的值,修改操作会很烦琐且容易遗漏。而使用了符号常量的话,则只需要修改定义处的值即可。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算变量是指在程序运行过程中,其值可以改变的量。变量具有保值的性质,但是当给变量赋新值时,新值会取代旧值,这就是变量的值发生变化的原因。程序中用到的所有变量都必须有一个名字作为标识,变量在使用之前必须先定义,变量在内存中占用一定的存储单元,在该存储单元中存放变量的值,给变量所取的名字叫变量名,给变量命名要符合标识符的命名规则。例如,定义一个变量a,那么内存中就应该开辟一个空间,可以存储数据,如图2.2所示。2.2常量与变量2.2.2变量第2章C语言数据与运算1.变量的定义与使用在C语言中,所有的变量必须先定义后使用。(1)变量的定义。C语言的基本变量类型有整型变量、实型变量和字符型变量。在程序中,使用变量必须先定义。定义一个变量就是要确定其类型与名字(标识符)。变量的类型决定了存储数据的格式和占用内存字节数;变量的名字由用户定义,它必须符合标识符的命名规则。变量定义后,程序通过变量名字读写变量地址中的数据。变量定义的一般形式为:[存储类型]数据类型变量名1[,变量名2,...];下面是一些定义变量的例子。inta,b,c; //定义了3个整型变量floatx; //定义了单精度实型变量xdoublec; //定义了双精度实型变量ccharch; //定义了字符型变量ch2.2常量与变量2.2.2变量第2章C语言数据与运算变量定义时,需要注意以下几点。(1)允许在一个类型说明符后定义多个相同类型变量。类型说明符与变量名之间至少用一个空格间隔,各变量名之间用逗号间隔。(2)最后一个变量名后面用“;”结尾。(3)变量定义必须放在变量使用之前,一般放在函数体开头部分。(4)没有给变量赋初值,并不意味着该变量中没有数值,只表明该变量中没有确定的值,因此直接使用这种变量的话可能产生莫名其妙的结果,有可能导致运算错误。(2)标识符。标识符是用来标识变量、符号常量、数组、函数、文件等名字的有效字符序列。大家以后要学习的变量名、数组名、函数名等都是程序中的标识符。C语言规定,标识符只能由字母、数字、下划线组成,且第一个字符必须为字母或下划线。例如,computer、a01、Student_name、sum、Sum、_sum等都是合法的标识符。标识符中的字母是区分大小写的,如sum、SUM、Sum不能混用。一般情况下,变量名用小写字母,特殊的标识符用大写字母。为了阅读程序方便,标识符最好能够见名知意,如使用英文单词或汉语拼音,但不能出现汉字或其他全角字符。C语言中标识符的长度(字符个数)没有统一规定,多数系统中允许达到32个字符,多于规定长度的字符无效。2.2常量与变量2.2.2变量第2章C语言数据与运算(3)关键字。C语言内部预先定义的标识符称为关键字(或保留字)。关键字不能够作为用户标识符。ANSI标准中规定了32个符号为基本关键字,如下所示。auto break case char const continue default do doubleelse enum exern float for goto if int longregister return short signed sizeof static struct switchtypedef union unsignedvoid volatile while除了关键字以外,尽量不要使用main、printf等库函数的名字作为用户的标识符。(4)变量的初始化。上述变量的定义只是指定了变量名字和数据类型,并没有给它们赋初值。给变量赋初值的过程称为变量的初始化。例如:inta=128,b=-6; //定义了a和b两个整型变量,初值分别为128和-6floatx=10.15; //定义了单精度实型变量x,初值为10.15doublec,d=3.8; //定义了双精度实型变量c和d,并给d赋初值charch='k'; //定义了字符型变量ch,其值为字符k2.2常量与变量2.2.2变量第2章C语言数据与运算2.整型变量(1)整型变量的分类。①基本型:类型说明符为int,在内存中占4字节。②短整型:类型说明符为shortint或者short,在内存中占2字节。③长整型:类型说明符为longint或者long,在内存中占4字节。④无符号型:类型说明符为unsigned。(2)整型变量的定义。变量定义的一般形式如下。类型说明符变量1[=值1],变量2[=值2],①类型说明符与变量名之间至少要有一个空格间隔。②在一个类型说明符后可定义多个相同类型的变量,但变量间要用逗号间隔。③最后一个变量名后必须用分号结束。④[]内的为可选项,即为变量的初始化。例如:inta,b; //a,b为整型变量longx,y; //x,y为长整型变量2.2常量与变量2.2.2变量第2章C语言数据与运算【实例2.13】已知两变量a和b,求a和b之和。程序代码如下。
#include<stdio.h>voidmain(){inta,b,sum;a=10;b=20;sum=a+b;printf("a+b=%d\n",sum);}程序运行结果如下。a+b=30如果将变量定义代码修改为“inta=10,b=20,sum”,结果会是一样的。2.2常量与变量2.2.2变量第2章C语言数据与运算【实例2.14】不同类型整形变量的定义与使用。程序代码如下。#include<stdio.h>intmain(){inta,b,x,y;unsignedlongw;a=10,b=20,w=30;x=a+w;y=b+w;printf("x=%d,y=%d\n",x,y);return0;}程序运行结果如下。x=40,y=50
2.2常量与变量2.2.2变量第2章C语言数据与运算【实例2.15】短整型变量的溢出。程序代码如下。#include<stdio.h>intmain(){shortintx,y;x=32767;y=x+1;printf("x=%d,y=%d\n",x,y);return0;}程序运行结果如下。x=32767,y=-32768短整型变量的取值范围是-32768~32767,变量x的值加1以后超出了该范围,产生意想不到的结果。说明:(1)各种无符号整数所占的字节数与相应的有符号整数相同。但由于省去了符号位,故不能表示负数。(2)有符号整数以二进制补码形式存储。最左边第1位表示符号,该位为0,表示正数,该位为1,表示负数。(3)无符号整数以二进制原码形式存储。2.2常量与变量2.2.2变量第2章C语言数据与运算3.实型变量C语言中实型变量分单精度(float型)和双精度(double型)两类。(1)实型变量的分类。单精度;类型说明符为float,在内存中占4字节。双精度:类型说明符为double,在内存中占8字节。各类实型变量所分配的内存字节数及数的表示范围,如表2.5所示。2.2常量与变量2.2.2变量第2章C语言数据与运算(2)实型变量的定义。实型变量的定义格式和书写规则与整型变量相同。说明:(1)实型变量由有限的存储单元组成,能提供的有效数值有限,这样就存在舍入误差。(2)一个单精度实型变量只能保证7位有效数字,后面的数值是无意义的,并不准确地表示该数。应当避免将一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”小的数。例如:floata,b,c; //a,b,c为单精度实型变量doublex,y,z; //x,y,z为双精度实型变量2.2常量与变量2.2.2变量第2章C语言数据与运算【实例2.16】已知圆的半径,求圆的周长和面积。程序代码如下。#include<stdio.h>voidmain(){floatr=2.5,C,S,pi=3.14; //定义变量并赋值C=2*pi*r; //计算语句S=pi*r*r; printf("圆的周长C=%f,圆的面积S=%f\n",C,S); //输出结果}程序运行结果如下。圆的周长C=15.700001,圆的面积S=19.625001小数点后面默认保留6位。2.2常量与变量2.2.2变量第2章C语言数据与运算【实例2.17】实型数据的舍入误差。程序代码如下。#include<stdio.h>intmain(){ floatx=1234.56789; doubley=1234.123456789; printf("x=%f,y=%f\n",x,y); return0;}程序运行结果如下。x=1234.567871,y=1234.123457由于x是单精度浮点型,有效数字位数为7位,其中整数已占4位,故3位小数之后的均为无效数字。y虽然是双精度型,有效数字位数为16位,但VisualC++规定双精度小数后最多保留6位,其余部分四舍五人。2.2常量与变量2.2.2变量第2章C语言数据与运算4.字符型变量字符型变量的值是字符常量,即用单引号引起来的单个字符。字符型变量的类型说明符是char,其类型说明的格式和命名规则与整型变量相同。例如:charx,y; //x,y为字符变量由于字符常量在内存中占用一个字节,用于存储它的ASCII码值,所以C语言中的字符具有数值特征,可以像整数一样参加运算,允许对整型变量赋以字符值,也允许对字符变量赋以整型值。C语言在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。2.2常量与变量2.2.2变量第2章C语言数据与运算【实例2.18】字符变量的使用。程序代码如下。#include<stdio.h>intmain(){ charc1,c2; intm1;c1='A'; //字符赋值给字符变量c2=66; //整数赋值给字符变量m1='C'; //字符赋值给整型变量printf("%c,\t%d\n",c1,c1); printf("%c,\t%d\n",c2,c2);printf("%c,\t%d\n",m1,m1);return0;}程序运行结果如下。A,65B,66C,672.2常量与变量2.2.2变量第2章C语言数据与运算【实例2.19】把大写字母转换为小写字母。程序代码如下。
#include<stdio.h>intmain(){ charc1,c2;c1='A'; c2='B'; c1=c1+32; c2=c2+32; printf("%c,\t%d\n",c1,c1); printf("%c,\t%d\n",c2,c2); return0;}程序运行结果如下。a,97b,98c1,c2为字符变量并被赋予字符值,由于大小写字母的ASCII值相差32,因此运算后把大写字母转换成小写字母,最后分别以字符和整形输出。2.2常量与变量2.2.2变量第2章C语言数据与运算2.3.1赋值运算符和赋值表达式2.3.2算术运算符和算术表达式2.3.3逗号运算符和逗号表达式2.3.4字节运算符2.3运算符和表达式第2章C语言数据与运算计算机通过各种运算完成对数据的处理。通常对数据可以进行加、减、乘、除等算术运算,也可以进行关系运算、逻辑运算、位运算。用来表示各种运算的符号称为运算符。C语言中的运算符非常丰富。运算符与运算对象(变量、常量、函数、表达式)组合起来,构成了C语言的表达式。只有一个运算对象的运算符称为单目运算符,有两个运算对象的运算符称为双目运算符,有三个运算对象的运算符称为三目运算符。当一个表达式中出现多个运算符时,就要考虑哪个运算符先运算,哪个运算符后运算,这就是运算符的优先级问题。优先级相同的运算符还有运算方向的规定,即结合性。自左向右进行运算的结合方向是左结合,自右向左进行运算的结合方向为右结合。在表达式中,各运算对象参与运算的先后顺序,不仅要遵守运算符优先级的规定,还要受到运算符结合性的制约。在C语言的运算符中,所有单目运算符、条件运算符、赋值运算符及其扩展运算符结合方向都是从右向左,其余运算符的结合方向是从左到右。各类运算符优先级的比较:单目运算符>算术运算符>关系运算符>逻辑运算符(不包括!)>条件运算符>赋值运算符>逗号运算符。C语言中运算符和表达式数量之多,在其他高级语言中是很少见的。正是丰富的运算符和表达式使C语言功能十分完善,这也是C语言的特点之一,除了控制语句和输入/输出以外的几乎所有基本操作都作为运算符处理,运算符具体分类,如表2.6所示。2.3运算符和表达式2.3.1赋值运算符和赋值表达式第2章C语言数据与运算2.3运算符和表达式2.3.1赋值运算符和赋值表达式第2章C语言数据与运算C语言中赋值运算符有“=”、“+=”、“-=”、“*=”、“/=”和“%=”等。用赋值运算符将运算对象连接而成的表达式称为赋值表达式。1.简单赋值运算符最简单的赋值运算符就是“=”,它的作用是将一个数值赋给一个变量。如r=5的作用是执行一次赋值操作(或称赋值运算)。把常量5赋给变量r。也可以将一个表达式的值赋给一个变量。下面是给变量赋值的例子:intx,y,z=10;定义x,y,z为整型变量,但只对z进行了赋值操作,z的值为10。如果对几个变量赋予同一个初值,应写成:intx=10,y=10,z=10;表示x,y,z的初值都是10。如果写成下面的格式,则是错误的。intx=y=z=10;2.3运算符和表达式2.3.1赋值运算符和赋值表达式第2章C语言数据与运算2.3运算符和表达式2.3.1赋值运算符和赋值表达式第2章C语言数据与运算3.赋值表达式在C语言中,赋值语句属于表达式语句。赋值表达式是由赋值运算符将一个变量和一个表达式连接起来的式子所组成。它的一般形式为变量=表达式由于赋值表达式的作用是将一个表达式的值赋给一个变量,因此赋值表达式具有计算和赋值的双重功能。需要注意:赋值运算符的左侧必须是一个变量。例如:“x=10”赋值表达式的值为10,x的值也为10。“x=7%2+(y=5)”赋值表达式的值为6,x的值也为6,y的值为5。“a=(b=6)”或“a=b=20”赋值表达式的值为20,a、b的值均为20。“a+=a*(a=5)”相当于“a=5+5*5”,赋值表达式的值为30,a的值最终也是30。赋值表达式的功能是计算表达式的值再赋予左边的变量。赋值运算符具有右结合性,因此“a=b=c=5”可理解为“a=(b=(c=5))”注意:赋值表达式加上一个分号则可构成赋值语句,即“变量=表达式;”。赋值语句不是赋值表达式,表达式可以用在其他语句或表达式中,而赋值语句只能作为一个单独的语句使用。C语言规定,可以在定义变量的同时给变量赋值,也叫变量初始化。例如“intx=10”。赋值运算时,当赋值运算符两边数据类型不同时,将由系统自动进行类型转换,转换原则是先将赋值号右边的表达式类型转换为左边变量的类型,然后赋值。2.3运算符和表达式2.3.1赋值运算符和赋值表达式第2章C语言数据与运算【实例2.20】赋值语句应用示例。程序代码如下。#include<stdio.h>intmain(){ intx;x=123.456; printf("x=%d\n",x); return0;}程序运行结果如下。x=123自动将小数部分截去,转化为整型后输出。2.3运算符和表达式2.3.1赋值运算符和赋值表达式第2章C语言数据与运算算术运算符包括基本算术运算符和自增自减运算符,其中基本算术运算符简称为算术运算符。1.基本算术运算符基本算术运算包括加、减、乘、除和求余等运算,其中加、减、乘、除和求余运算均为双目运算符,如表2.8所示,所谓双目运算符是指运算时需要两个操作数。2.3运算符和表达式2.3.2算术运算符和算术表达式第2章C语言数据与运算(1)加法运算符“+”,或称为正值运算符,其功能是进行求和运算,如5+3的值为8。(2)减法运算符“-”,或称为负值运算符,作为单目运算符使用时,是取负运算,如-6;作为双目运算符使用时,是进行求差运算,如5-6的值为-1。(3)乘法运算符“*”,为双目运算符,功能是进行求乘积运算,如5*4的值为20。(4)除法运算符“/”,为双目运算符,功能是进行求商运算,如a/b。在计算a/b时,如果a和b都是整型,则其商也为整型,小数部分被舍去,如3/4的结果为0,4/3的结果为1。如果a和b中有一个是实型,则a和b都转换为double类型,然后相除,结果为double类型,如3.0/2的结果为1.5。(5)求余运算符“%”,为双目运算符,功能是进行求余数的运算,如a%b,其结果为a除以b后的余数。求余运算要求参与运算的两个运算对象都必须是整型,其结果也是整型。如5%4的结果为1。求余运算结果的符号与第一个操作数符号相同,如-5%4的值为-1,5%-4的值为1。2.3运算符和表达式2.3.2算术运算符和算术表达式第2章C语言数据与运算【实例2.21】算术运算符应用示例。程序代码如下。#include<stdio.h>voidmain(){ printf("5+4=%d,\t5-4=%d\n",5+4,5-4); printf("5*4=%d,\t5/4=%d\n",5*4,5/4); printf("5%%4=%d\t\n",5%4);}程序运行结果如下。5+4=9,5-4=15*4=20,5/4=15%4=1输出百分号%,可以使用命令如下。
printf("%%\n"); printf("\045%\n");注意:百分号%的ASCII值为37,转换为八进制数为045,printf函数中,当出现多个%时,由左至右,每两个%结合输出一个%。2.3运算符和表达式2.3.2算术运算符和算术表达式第2章C语言数据与运算2.自增自减运算符
C语言有两个特殊运算符“++”和“--”。(1)作用:自增运算使单个变量的值增1,自减运算使单个变量的值减1。(2)用法与运算规则:自增、自减运算符都有如下两种用法。①前置运算。运算符放在变量之前,如++i、--i,先使变量的值增(或减)1,然后以变化后的值参与其他运算,即先增减、后运算。②后置运算。运算符放在变量之后,如i++、i--,变量先参与其他运算,再使变量的值增(或减)1,即先运算、后增减。2.3运算符和表达式2.3.2算术运算符和算术表达式第2章C语言数据与运算【实例2.22】自增自减运算符应用示例。程序代码如下。(插入二维码V2-4自增自减运算符应用示例)#include<stdio.h>intmain(){inti=3,j;j=i++; //j的值为3,然后i为4printf("i=%d,j=%d\n",i++,j); //打印出i为4、j为3,然后i为5j=++i; //j的值为6,i也为6printf("i=%d,j=%d\n",++i,j); //打印出i为7、j为6,然后i为7j=--i; //j的值为6,i也为6printf("i=%d,j=%d\n",i--,j); //打印出i为6、j为6,然后i为5j=i--; //j的值为5,然后i为4printf("i=%d,j=%d\n",--i,j); //打印出i为3、j为5,然后i为3return0;}程序运行结果如下。i=4,j=3i=7,j=6i=6,j=6i=3,j=52.3运算符和表达式2.3.2算术运算符和算术表达式第2章C语言数据与运算注意:①++和--只能用于变量,而不能用于常量或表达式。如“(i+j)++”或“3--”是不合法的。②++和--的结合方向是“自右至左”。如i=4,则“-i--”相当于“-(i--)”,结果为-4,而i的值为3。③在较复杂的表达式中,运算符的组合原则是尽可能多地自左而右将若干个字符组成一个运算符。如“a+++b”等价于“(a++)+b”,而不是“a+(++b)”。④++和--常用于循环语句中,使循环控制变量加或减1;还用于指针变量中,使指针上移或下移一个位置。2.3运算符和表达式2.3.2算术运算符和算术表达式第2章C语言数据与运算2.自增自减运算符
C语言有两个特殊运算符“++”和“--”。(1)作用:自增运算使单个变量的值增1,自减运算使单个变量的值减1。(2)用法与运算规则:自增、自减运算符都有如下两种用法。①前置运算。运算符放在变量之前,如++i、--i,先使变量的值增(或减)1,然后以变化后的值参与其他运算,即先增减、后运算。②后置运算。运算符放在变量之后,如i++、i--,变量先参与其他运算,再使变量的值增(或减)1,即先运算、后增减。(2)C语言规定了进行表达式求值过程中,各运算符的“优先级”和“结合性”,如下所述。①C语言规定了运算符的“优先级”和“结合性”。在表达式求值时,先按运算符的“优先级”高低次序执行,如表达式“a-b*c”等价于“a-(b*c)"。②如果在一个运算对象两侧的运算符优先级相同,则按规定的“结合方向”运算,如表达式“a-b+c”结合性为“自左向右”,所以等价于“(a-b)+c”。③对于复杂表达式,为了清晰起见可以加圆括号“()”强制规定计算顺序。2.3运算符和表达式2.3.2算术运算符和算术表达式第2章C语言数据与运算【实例2.23】输入一个3位的正整数,输出其反序数(如123反序数为321)。程序代码如下。#include<stdio.h>intmain(){intnumber,a,b,c; //定义变量
number=123;printf("请输入一个3位数:%d\n",number); //输出原数
a=number/100; //计算百位数
b=(number-a*100)/10; //计算十位数
c=number%10; //计算个位数
printf("反序数是:%d%d%d\n",c,b,a); //输出反序数
return0;}程序运行结果如下。请输入一个3位数:123反序数是:3212.3运算符和表达式2.3.2算术运算符和算术表达式第2章C语言数据与运算C语言中逗号“,”也是一种运算符,称为逗号运算符,其功能是把多个表达式连接起来组成一个表达式,称为逗号表达式。逗号表达式的一般形式为:表达式1,表达式2,···,表达式n(1)逗号表达式的执行顺序是:从左到右依次计算每个表达式的值,并把最后一个表达式的值作为整个逗号表达式的值。如对于表达式“a=5,b=3,c=a+b”,首先计算a=5的值,结果为5,再计算b=3的值,结果为3,最后计算的值,结果为8,则整个逗号表达式的值为8,该表达式执行完后,a=5,b=3,c=8。(2)逗号运算符是双目运算符,其优先级最低,是左结合的。(3)并非所有出现逗号的地方都为逗号表达式,如在变量说明语句中,以及函数参数表中逗号只是用作各变量之间的分隔符。2.3运算符和表达式2.3.3逗号运算符和逗号表达式第2章C语言数据与运算【实例2.24】逗号表达式应用示例。程序代码如下。#include<stdio.h>intmain(){ inti,j=5; floatk=2; i=(j=j+1,j/k); printf("i=%d\n",i); return0;}程序运行结果如下。i=32.3运算符和表达式2.3.3逗号运算符和逗号表达式第2章C语言数据与运算运算符sizeof用于计算数据类型所占的字节数,它是一个单目运算符,优先级高于双目运算符,其一般格式如下:(1)sizeof(表达式)或sizeof表达式(2)sizeof(数据类型名)。【例2.25】不同数据类型字节数示例。程序代码如下。#include<stdio.h>intmain(){ printf("char类型占%d字节\n",sizeof(char));printf("shortint类型占%d字节\n",sizeof(shortint));printf("int类型占%d字节\n",sizeof(int));printf("float类型占%d字节\n",sizeof(float));printf("double类型占%d字节\n",sizeof(double));return0;}程序运行结果如下。char类型占1字节shortint类型占2字节int类型占4字节float类型占4字节double类型占8字节2.3运算符和表达式2.3.4字节运算符第2章C语言数据与运算【实例2.26】求字节数运算符示例。程序代码如下。#include<stdio.h>intmain(){ inta,b;a=sizeof(2+4.0);b=sizeof2+4.0;printf("%d,%d,%d\n",a,b,sizeof("good")); return0;}程序运行结果如下。8,8,5执行语句“a=sizeof(2+4.0);”时,先计算出2+4.0的结果为double型的6.0,然后再对其求字节数,结果为8。执行语句“b=sizeof2+4.0”时,由于sizeof运算符的优先级高于+运算符,因此先计算sizeof2,其值为4,然后计算4+4.0=8.0,赋值给int型的变量b时,b=8。“good”是字符串,其字节数为字符串的长度加1个字节,增加的这个字节用于存放字符串的结束符'\0'。2.3运算符和表达式2.3.4字节运算符第2章C语言数据与运算2.4.1位运算符及其表达式2.4.2位逻辑运算符2.4.3移位运算符2.4位运算第2章C语言数据与运算位运算是指在C语言中能进行二进制位的运算。位运算有位逻辑运算和移位运算两种。逻辑运算能够方便地设置或屏蔽内存中某个字节的一位或几位,也可以对两个数按位相加;移位运算可以对内存中某个二进制数左移或右移若干位。C语言提供了6种位运算符,如表2.9所示。2.4位运算2.4.1位运算符及其表达式第2章C语言数据与运算说明:(1)位运算符的运算对象a和b只能是整型数据或字符型数据,不能是实型数据。(2)位运算符中只有按位取反运算符(~)为单目运算符,其他均为双目运算符,即要求运算符的两侧各有一个运算对象。(3)位运算符优先顺序为:“~”高于“<<”“>>”高于“&”高于“^”高于“|”。(4)运算对象一律按二进制补码形式参与运算,并且是按位进行运算。(5)位运算的结果是一个整型数据。2.4位运算2.4.1位运算符及其表达式第2章C语言数据与运算下面介绍位运算符的使用方法,a和b均为整型变量,设a的值为6,b的值为10(以16位系统为例,6对应二进制数为0000000000000110,10对应二进制数为0000000000001010)。1.位逻辑运算符(1)按位与运算符(&)。运算规则:参与运算的两数对应的各二进制位相与,只有对应的两个二进制位均为1时,结果位才为1,否则为0。即0&0=0,0&1=0,1&0=0,1&1=1。【实例2.27】计算a&b的值。a的补码: 0000000000000110b的补码: 0000000000001010按位与&结果的补码: 0000000000000010即:a&b=2。按位与通常有以下几种特殊的用途。①数据的某些位清零。如执行语句:a=a&0,结果为a=0。②判断数据的某位是否为1。如计算表达式a&0x8000,其值如果为0,表示变量a的最高位为0;其值如果非0,表示变量a的最高位为1。③保留数据的某些位。如执行语句:a=a&0xff00,结果保留a中高八位不变,低八位数据被清空。如执行语句:a=a&255(255的二进制数为0000000011111111),结果a高八位清空,保留低八位。2.4位运算2.4.2位逻辑运算符第2章C语言数据与运算【实例2.28】从键盘输入一个短整型整数,判断其最高位(即整数二进制表示的最左边一位)是0还是1,若为0则输出“正数”,若为1则输出“负数”。分析:将从键盘输入的数据和二进制数1000000000000000(十进制数为32768,十六进制数为0x8000)进行按位与运算,保留其最高位,若结果为0,则说明最高位是0(正数),否则说明最高位是1(负数)。程序代码如下。#include<stdio.h>intmain(){ shortintx,y=32768,z;printf("请输入x的值:"); scanf("%d",&x);z=x&y;if(z==0) printf("%d是正数\n",x);else printf("%d是负数\n",x); return0;}程序运行结果如下。请输入x的值:-123-123是负数请输入x的值:5050是正数2.4位运算2.4.2位逻辑运算符第2章C语言数据与运算(2)按位或运算符(|)。运算规则:参与运算的两数对应的各二进制位相或,如果对应的两个二进制位均为0,则结果为0,否则为1。即0|0=0,0|1=1,1|0=1,1|1=1。【实例2.29】计算a|b的值。a的补码: 0000000000000110b的补码: 0000000000001010按位或 结果的补码: 0000000000001110即:a|b=14。按位或通常用于将数据的某些特定位置为1。例如,要将变量a的低八位全部置1,高八位不变,可以用a=a|0x00ff语句来实现。2.4位运算2.4.2位逻辑运算符第2章C语言数据与运算(3)按位异或运算符(^)。运算规则:参与运算的两数对应的各二进制位相异或,当两个对应的二进制位相异时,结果为1,相同则为0。即0^0=0,0^1=1,1^0=1,1^1=0。【实例2.30】计算a^b的值。a的补码: 0000000000000110b的补码: 0000000000001010按位异或^ 结果的补码: 0000000000001100即:a^b=12按位异或具有“与1异或的位其值翻转;与0异或的位其值不变”的规律,所以通常用于保留数据的原值,或者使数据的某些位翻转。例如:inta=5,b,c;b=a^0; //结果b=5c=a^0x000f; //结果c=102.4位运算2.4.2位逻辑运算符第2章C语言数据与运算【实例2.31】假设有整型变量a和b,并且a=6,b=10。现在要求不使用中间变量,将a和b的值互换。可以用以下3条赋值语句实现变量值互换的功能。a=a^b; //即a=6^10=12b=b^a; //即b=10^12=6a=a^b; //即a=12^6=102.4位运算2.4.2位逻辑运算符第2章C语言数据与运算【实例2.32】编程实现将一个短整型数的低8位进行反转操作。分析:要将某个数(28)的二进制表示的某些位进行反制,需要构造一个数,使该数对应需要反转的各位为1,其余为0,然后将两个数进行异或即可,运算式如下。28的补码: 0000000000011100255的补码: 0000000011111111按位异或^ 结果的补码: 0000000011100011即28^255=2272.4位运算2.4.2位逻辑运算符第2章C语言数据与运算程序代码如下。#include<stdio.h>intmain(){ shortintx,y=255,z; printf("请输入x的值:"); scanf("%d",&x); z=x^y; printf("x=%d,y=%d,z=%d\n",x,y,z); return0;}程序运行结果如下。请输入x的值:28x=28,y=255,z=2272.4位运算2.4.2位逻辑运算符第2章C语言数据与运算(4)按位取反运算符(~)。运算规则:对参与运算的数的各二进位按位求反,即将1变为0,0变为1。例如:a的补码为0000000000000110,那么~a=111111111001。以上位逻辑运算的规则,如表2.10所示,表中x和y均是一个二进制位。2.4位运算2.4.2位逻辑运算符第2章C语言数据与运算【实例2.33】位运算符应用示例。程序代码如下。#include<stdio.h>voidmain(){ unsignedchara,b,c,r1,r2,r3,r4; a=0x12; b=0x34; c=0x56; r1=a&b; r2=a|b; r3=a^b; r4=~c;/*以十六进制形式输出变量的值*/ printf("a=%x,\tb=%x,\tc=%x\n",a,b,c); printf("a&b=%x\n",r1); printf("a|b=%x\n",r2); printf("a^b=%x\n",r3); printf("~c=%x\n",r4);}程序运行结果如下。a=12,b=34,c=56a&b=10a|b=36a^b=26~c=a92.4位运算2.4.2位逻辑运算符第2章C语言数据与运算移位运算符有2个:<<(左移运算符)、>>(右移运算符),它们都是双目运算符。1.左移运算符(<<)运算规则:对“<<”左侧的数据中的各二进制位全部左移,左移的位数由“<<”右侧数据指定。移位后右边出现的空位补0,移出存储空间的高位数据舍弃。例如,a<<2,表示将a的各位依次向左移2位,a的最高2位移出去舍弃,空出的低2位以0填补。假设有chara=5,则a<<2的过程如下。a: 00000101a<<2: (00) 00010100舍弃补0即a<<2的值为20。说明:左移1位相当于该数乘以2,左移n位相当于该数乘以2n,左移比乘法运算执行起来要快很多。但是左移n位相当于该数乘以2n,只适合于未发生溢出的情况,即移出的高位中不含有1的情况。2.4位运算2.4.3移位运算符第2章C语言数据与运算2.右移运算符(>>)运算规则:对“>>”左侧的数据中的各二进制位全部右移,右侧的位数由“>>”右侧数据指定。移位后移出存储空间的低位数据舍弃,左边空出的位补0还是补1,分以下两种情况。①无符号数进行右移时,空出的高位补0。这种右移称为“逻辑右移”。例如,有语句unsignedchara=0x80,则a>>1的过程如下。a: 10000000 等于十进制数128a>>1: 01000000 0 等于十进制数64补0 舍弃所以a>>1的值为0x40。②对带符号数进行右移时,空出的高位全部以符号位填补,即正数补0,负数补1。这种右移称为“算术右移”。例如,有语句chara=0x80,则a>>1的过程如下。a: 10000000 等于十进制数-128a>>1: 11000000 0 等于十进制数-64补1 舍弃又如:chara=0x60,则过程如下。a: 01100000 等于十进制数96a>>1: 00110000 0 等于十进制数48补0 舍弃可以看出,数据右移1位相当于该数除以2,同样,右移n位相当于该数除以2n适用于右边移出的低位数据中不包括1的情况。2.4位运算2.4.3移位运算符第2章C语言数据与运算3.位赋值运算符位运算符与赋值运算符结合可以组成位赋值运算符,C语言提供的位赋值运算符,如表2.8所示,它们都是双目运算符。2.4位运算2.4.3移位运算符第2章C语言数据与运算【实例2.34】移位运算符应用示例。程序代码如下。(插入二维码V2-5移位运算符应用示例)#include<stdio.h>voidmain(){unsignedinta,b;printf("inputanumber:");scanf("%d",&a);a=a<<2; //左移2位
printf("a=%d\n",a);printf("inputbnumber:");scanf("%d",&b); b=b>>2; //右移2位
printf("b=%d\n",b);}程序运行结果如下。inputanumber:64a=256inputbnumber:128b=322.4位运算2.4.3移位运算符第2章C语言数据与运算2.5.1赋值运算类型转换2.5.2自动类型转换2.5.3强制类型转换2.5数据类型转换第2章C语言数据与运算在C语言中,变量的数据类型是可以转换的,转换方式有两种,一种是自动类型转换,另一种是强制类型转换。1.赋值运算类型转换
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026重庆医科大学附属大学城医院第二季度考核招聘高层次和紧缺人才10人备考题库及完整答案详解一套
- 2026重庆旅游资产管理有限公司金刀峡分公司招聘5人备考题库有答案详解
- 2026浙江宁波市第二医院招聘高层次人才40人备考题库参考答案详解
- 宜宾消防安全指南
- 湘潭县消防安全直播回放
- 爱眼护眼健康指导
- 消防重点单位管理指南
- AI教师重塑教育新未来
- 单位安全生产方略解析讲解
- 广西民族大学就业前景分析
- 2025宁夏旅游投资集团有限公司招聘16人(第二批)笔试备考题库及答案解析
- 小学劳动教育课程全套教案
- 四新安全技能培训内容课件
- 输尿管结石术后患者护理
- 铁路通信承载业务课件
- 物业品质现场培训课件
- SL3000变频恒压供水控制系统
- 消防设施评估报告范本
- 2025年广东省中考地理试题卷(标准含答案)
- 劳务合同培训课件
- 辽宁省文体旅集团所属企业招聘笔试题库2025
评论
0/150
提交评论