




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章数据类型 运算符与表达式 程序是解决某种问题的一组指令的有序集合 著名计算机科学家沃思 NikiklausWirth 提出一个公式 程序 数据结构 算法 程序是什么 对数据的描述 在C语言中 体现为数据类型的描述 对数据处理的描述 是为解决一个问题而采取的方法和步骤 是程序的灵魂 结论 学好C语言首先就必须十分了解C语言的数据类型 运算符与表达式 3 1C语言数据类型 数据类型决定 1 数据占内存字节数2 数据取值范围3 其上可进行的操作 本章所介绍的数据类型 3 2常量 变量和标识符1 标识符定义 用来标识变量 常量 函数等的字符序列组成 只能由字母 数字 下划线组成 且第一个字母必须是字母或下划线C语言的关键字不能用作变量名大小写敏感长度 有效长度为32个字符 随系统而异 但至少前8个字符有效命名原则 变量名和函数名中的英文字母一般用小写 以增加可读性见名知意不宜混淆如l与I o与0 在TC2 0及BC3 1中 变量名 标识符 的有效长度为 个字符 缺省值为 但在VC中其长度可达到255 例 判断下列标识符号合法性sumSumM D JohndayDate3daysstudent name 33lotus 1 2 3chara b above 123 M D John 3days 33 char 123 a b 字符非法 数字3不可作首字符 字符非法 char是关键字 字符非法 不可作首字符 3 2常量 变量和标识符2 常量定义 程序运行时其值不能改变的量 即常数 常量的分类 直接常量 值常量 整型常量 10 15 10 30实型常量 12 5 30 0 1 5字符常量 A b c 字符串常量 sum A 123 符号常量用标识符来代表常量 其定义格式为 define符号常量常量 defineNUM20 definePI3 1415926 include definePRICE30voidmain intnum total num 10 total num PRICE printf total d total 运行结果 total 300 行尾不能有分号define前面一定要有 符号常量名最好使用大写符号常量名最好有意义 3 2常量 变量和标识符3 变量定义 程序运行时其值可以被改变的量变量的两要素 变量名 变量值变量的定义格式 变量的初始化 定义时赋初始值变量的使用 先定义 后赋值变量定义位置 一般放在函数开头 存储类型 数据类型变量名1 变量名2 变量名n intx y z floatradius length area charch 决定分配字节数和数的表示范围 合法标识符 例 inta 2 b c 4 floatdata 3 67 charch A intx 1 y 1 z 1 intx y z 1 例1 intstudent stadent 19 Undefinedsymbol statent infunctionmain 例2 floata b c c a b Illegaluseoffloatingpointinfunctionmain 3 3简单数据类型与表示范围 1 整型数据 整型常量 十进制整数 由数字0 9和正负号表示 如 123 456 0八进制整数 由数字0开头 后跟数字0 7表示 如 0123 011十六进制整数 由0 x或0X开头 后跟0 9 a f A F表示 如0 x123 0Xff 定义整数的符号常量 defineNUM120 十进制数20 defineNUM2020 八进制数 十进制16 defineNUM30 x2a 十六进制数 十进制42 思考题 下列整型常量哪些是非法的 012 oX7A 00 078 0 x5Ac 0 xFFFF 0034 7B 首字符不能是字母o 八进制数中不能有数字8 十进制数中不能有字母B 2 整数在内存中的表示 整数的数值在内存中用补码的形式存放 求一个整数补码的方法 假设用n个二进制位的内存单元来存储它 如果是正整数 采用符号 绝对值表示 即最高有效位 符号位 为0表示正 数的其余部分则表示数的绝对值 如果是负整数 则先写出与该负数相对应的正数的补码表示 然后将其按位求反 最后在末位 最低位 加1 然后将上述求得的补码的低n位存放于内存单元之中 就得到了该整数在内存中的表示 内存单元的最高位是符号位 0表示正 1表示负 在TC2 0或BC3 1下 一个整数默认情况下需要2个字节 16位 的内存单元存放 而在VC6 0下 则需要4个字节 32位 2 整数在内存中的表示 十进制整数 14 对于16位的内存单元 符号位 十进制数 14两个字节的内存实际存放形式 14 补 0000000000001110 2 整数在内存中的表示 十进制整数 14 对于32位的内存单元 十进制数 14四个字节的内存实际存放形式 14 补 00000000000000000000000000001110 符号位 记住 数据在内存中的存放位置是高字节放在高地址的存储单元中 低字节放在低地址的存储单元中 2 整数在内存中的表示 十进制整数 14 对于16位的内存单元 符号位 十进制数 14两个字节的内存实际存放形式 14 补 0000000000001110 14 补 1111111111110010 2 整数在内存中的表示 十进制整数 14 对于32位的内存单元 十进制数 14四个字节的内存实际存放形式 14 补 00000000000000000000000000001110 符号位 14 补 11111111111111111111111111110010 2 整数在内存中的表示 十进制整数 65537 对于16位的内存单元 65537 补 010000000000000001 65537 补 101111111111111111 十进制数 65537两个字节的内存实际存放形式 符号位 真值为 1 不是 65537 2 整数在内存中的表示 十进制整数 65537 对于32位的内存单元 十进制数 65537四个字节的内存实际存放形式 65537 补 00000000000000010000000000000001 符号位 表示负 65537 补 11111111111111101111111111111111 真值为 65537 为什么 65537这个数在16位内存单元中的表示与在32位内存单元中的表示不相同呢 这主要是因为 65537这个数超出了16位内存单元表示数的范围 所以实际存储的值 1 与要表示的值 65537 不同 但 65537并没有超出了32位内存单元表示数的范围 所以实际存储的值就是其本身 因此 我们在C语言中对数据处理时必须要注意数据的表示范围 以免引起不必要的错误 3 整型变量 整型变量的定义 int变量名 变量名2 变量名n int必须小写 至少一个空格 必须为合法的标识符 以逗号 分隔 以分号 结尾 定义时可以赋初值 方法 在变量名后面增加 数值 例 inta intx y z intm 2 y 3 当程序中定义了一个变量时 计算机会为这个变量分配一个相应大小的内存单元 因此 这个变量是有值的 它的值就是对应内存单元的值 如果定义时没有赋初值 则这个值程序员是无法预知的 整型变量的分类 修饰符控制变量是否有符号 signed 有符号 和unsigned 无符号 控制整型变量的值域范围 short 短 和long 长 有符号基本型 int inta 2 定义一个有符号整型变量a 并赋初值 2占一个机器字大小的内存单元 TC下 变量占2个字节 16位 的内存单元 VC6 0下 变量占4个字节 32位 的内存单元 如果定义变量时 不指定signed 也不指定unsigned 则默认为signed 有符号 符号位 变量a占用的内存单元 2字节 有符号整型变量在内存中的实际存放形式 假设在BC3 1下 无符号基本型 unsignedint或unsigned unsignedinta 2 定义一个无符号整型变量a 并赋初值2或unsigneda 2 占用的内存单元字节数同int类型 与inta 2 等价 unsignedinta 2 定义一个无符号整型变量a 并赋初值 2或unsigneda 2 无符号整型变量在内存中的实际存放形式 假设在TC下 数据位 变量a占用的内存单元 2字节 其值为 65534 注意 对于有符号数也好还是无符号数也好 其实在计算机内存中表示是不加区分的 都是以其补码形式表示 只是我们怎样看待最高二进制位的问题 如果把最高位当成符号位看待 则为有符号数 如果把最高位当成数据位看待 则变为无符号数 例如 unsignedinta 2 printf d a 有符号输出 则为 2printf u a 无符号输出 则为65534 有符号短整型 shortint或short shortinta 2 定义一个有符号短整型变量a 并赋初值2或shorta 2 占用的内存单元为2个字节 无论是TC还是VC 无符号短整型 unsignedshortint或unsignedshort unsignedshortinta 2 定义一个无符号短整型变量a 并赋初值2或unsignedshorta 2 占用的内存单元字节数同short类型 在TC2 0下 unsignedshort类型与unsignedint类型是等价的 short int long c语言标准中要保证如左 在tc中前两个内存一样 vc中后两个一样 有符号长整型 longint或long longinta 234567 定义一个有符号长整型变量a 并赋初值234567或longa 234567 占用的内存单元为4个字节 无论是TC还是VC 无符号长整型 unsignedlongint或unsignedlong unsignedlonginta 2 定义一个无符号长整型变量a 并赋初值2或unsignedlonga 2 占用的内存单元字节数同long类型 在VC中long与int类型基本相同 均占四个字节的内存单元 但在TC中 long类型与int类型只是所占字节不同外 long占4字节 int占2字节 其它数据处理方法是一样的 例 各种整型变量的定义 include defineSUM65535voidmain inta b 20 unsignedintc 0 xff longD a SUM D 301 printf a d n a printf b d n b printf c d n c printf D d n D 文件包含 头文件说明 定义符号常量SUM 值为65535 定义两个int型变量a和b b赋初值20 定义无符号整型变量c 并赋初值0 xff 定义长整型变量D 对a赋值为SUM 这时a的值是65535 对D赋值为301 以有符号十进制形式 d 显示a的值 以有符号十进制形式 d 显示b的值 以有符号十进制形式 d 显示c的值 以有符号十进制形式 d 显示D的值 变量定义部分 语句执行部分 在TC3 0下运行结果 a 1b 20c 255D 301 在VC6 0下运行结果 a 65535b 20c 255D 301 对于16位的有符号整型变量a来说 因65535在内存中的形式为1111111111111111 最高位为1表示负 则其所对应的十进制数就为 1 4 整数常量的分类 根据其值所在范围确定其数据类型 在TC2 0下 如果整型常量的值位于 32768 32767之间 C语言认为它是int型常量 如果整型常量的值位于 2147483648 2147483647之间 C语言认为它是long型常量 整型常量后加字母l或L 认为它是longint型常量 比如123L 45l 0XAFL 无符号数也可用后缀表示 整型常数的无符号数的后缀为U或u 例如 358u 0 x38Au 235Lu均为无符号数 前缀 后缀可同时使用以表示各种类型的数 如0XA5Lu表示十六进制无符号长整数A5 其十进制为165 其实整型常数这种表示无符号数意义不大 在机器内部它还是用其补码表示 例如 1U和 1在内存中表示是一样的 数据处理也一样 所以有的教科书上说 常量无unsigned类型 其实有 但无意义 5 实型数据 实型常量 实数或浮点数 十进制小数形式 由数字0 9和小数点组成 如 0 0 5 6 5 指数形式 由十进制数 加阶码标志e或E以及阶码 只能为整数 可以带符号 组成 其一般形式为 aEn其中 a为十进制数 n为十进制整数 都不可缺少 其可表示为a 10n 合法的实数表示 2 1E5表示2 1 105 3 7E 2表示3 7 10 2 非法的实数表示 345 无小数点 E7 阶码标志E之前无数字 5 无阶码标志 50 E3 负号位置不对 实型变量 单精度实型 float floatf 3 14 g 这种定义的变量在内存中占4个字节 32位 的存储单元 双精度实型 double doublex y 这种定义的变量在内存中占8个字节 64位 的存储单元 长双精度实型 longdouble longdoublex y 在TC下 这种定义的变量在内存中占16个字节 128位 的存储单元 注意 三种实数类型中 其精度是float double longdouble longfloat实际上就是double 因此 没有longfloat类型 所有的实型常量按照double类型处理 5 实型数据 实型数据的精度 includevoidmain floata 定义float型变量adoubleb c 定义double型变量b和ca 123 456789 对变量a赋值为123 456789b a 将变量a赋给变量bc 123 456789 对变量c赋值为123 456789printf a fb lfc lf n a b c 123 456787 123 456787 123 456789 a 123 456787b 123 456787c 123 456789 float型变量最多只能精确表示8个数字 因此显示a的值时 只能有效显示前面8个数字即123 45678 最后追加一位数字7是随机的 6 字符型数据和字符串常量 字符型常量 定义 用单引号括起来的单个普通字符或转义字符 如 a A n 101 字符常量的值 该字符的ASCII码值 如 A 65 a 97 0 48 n 10 转义字符 反斜线后面跟一个字符或一个代码值表示 如 101 A 012 n 376 x61 a 60 0 483 例 A 101 x41 65 例 转义字符举例 includevoidmain printf 101 x42C n printf Isay Howareyou n printf CProgram n printf Visual C 运行结果 屏幕显示 ABCIsay Howareyou CProgram Visual C 例 voidmain printf Y b n 运行结果 屏幕显示 打印机输出 字符串常量定义 用双引号 括起来的字符序列存储 每个字符串尾自动加一个 0 作为字符串结束标志 例1 字符串 HELLO 在内存中 例2 空串 0 字符常量与字符串常量不同 例 charch ch A 例 charch ch A 字符型变量字符型数据类型符是char 字符character 在内存中占1个字节 8位 字符变量存放字符ASCII码char与int数据间可进行算术运算存在有符号和无符号之分 默认情况下为有符号 例 charch unsignedcharC B 例 a D a 68 x A 5 x 65 5 s G s 33 71 没有字符串变量 用字符数组存放 7 简单数据类型的表示范围 符号位 十六位整型数所表示的数据范围 数据位 例 变量的存储范围 includevoidmain charch intx ch 80 50 x 80 50 printf ch d n ch printf x d n x ch 126x 130 为什么 十进制数对应的机器数 补码 800000000001010000ch 500000000000110010 0000000010000010 10000010 符号位 真值 126 8 简单的数据输出 C语言中没有用于输出的语句 只能通过标准库函数的调用来完成数据的输出任务 库函数的一般调用格式为 函数名 参数1 参数2 参数n printf函数 例 printf Howareyou 输出 Howareyou 例 inta 100 printf variablea d a 输出 variablea 100 d 用于显示有符号整型数据 如int short型数据 u 用于显示无符号整型数据 如unsignedint unsignedshort型数据 f 用于显示实型数据 如float型数据 c 用于显示字符型数据 如char型数据 s 用于显示字符串数据 格式控制符 例 简单的数据输出 includevoidmain inta b unsignedintu longL charch floatf a 200 b 1 u b L u ch A f 32 17 printf a d t a printf b d n b printf u u t u printf L ld n L printf f f n f printf chis candvalueis d n ch ch printf IloveClanguage rYou n I后有三个空格 在VC下 a 200b 1u 4294967295L 1f 32 169998chisAandvalueis65YouloveClanguage 在BC下 a 200b 1u 65535L 65535f 32 169998chisAandvalueis65YouloveClanguage b的值是 1 在内存中表示为 0 xffff BC下 0 xffffffff VC下 当它赋给u时 由于u是无符号数 因此u的值是65535 BC下 4294967295 VC下 L是有符号长整型 u是无符号整型 在BC下 L占4字节 u占2字节 当把u赋值给L时 L的高2个字节为全0 因u无符号 故L的值为0 x0000ffff 即65535 但在VC下 L和u都占4字节 当把u赋值给L时 L的值为0 xffffffff 即 1 3 4C语言的运算符与表达式 变量用来存放数据 运算符则用来处理数据 用运算符将变量和常量连接起来的符合C语法规则的式子被称为表达式 运算符的分类 单目运算符 只带一个操作数的运算符 如 运算符 双目运算符 带两个操作数的运算符 如 运算符 三目运算符 带三个操作数的运算符 如 运算符 学习运算符时应注意 运算符的功能 该运算符主要用于做什么运算 与运算量关系 要求运算量的个数及运算量的类型 运算符的优先级 表达式中包含多个不同运算符时运算符运算的先后次序 运算符的结合性 同级别运算符的运算顺序 指左结合性还是右结合性 运算结果的类型 表达式运算后最终所得到的值的类型 1 赋值运算符 赋值表达式 赋值运算符 双目运算符 一般形式 变量 常量或变量或表达式 功能 将右边常量或变量或表达式的值赋给左边变量 例如 intx y z x 20 y x z x y 赋值表达式 定义 由赋值运算符或复合赋值运算符 后面即将介绍 将一个变量和一个表达式连接起来的表达式 称为赋值表达式 一般格式 变量 复合 赋值运算符表达式 赋值表达式的值 被赋值变量的值 例如 a 5 这个赋值表达式 变量a的值 就是它的值 赋值语句 例如 x 8 a b c 5 定义 赋值表达式在其后面加分号就构成了赋值语句 赋值运算符及赋值表达式的使用 多个变量连续赋值 例如 a b c 10 a b c 10 结果 a b c的值都为10 赋值表达式的嵌套 例如 a b 2 c 3 a b 2 c 3 结果 b为2 c为3 a为b c即5 注意 赋值语句 左边必须是变量名或对应某特定内存单元的表达式 后面的章节会遇到这样的表达式 不能是常量或其它表达式 例如 30 a b 2 5 都是错误的 赋值语句中的 表示赋值 不是代数中相等的意思 要表示相等的意思则应用关系运算符 表示 二者切勿混淆 2 强制类型转换符 C语言的数据类型是可以相互转换的 转换的方法有两种 一种是自动转换 一种是强制转换 自动转换 例如 inta 2 5 则a的值将是2 而不是2 5 这种自动改变等号右边表达式值的数据类型的操作称为数据类型的自动转换 首先将等号右边的表达式的值转换成 左边的数据类型 然后再赋值给等号左边的变量 1 短长度的数据类型 长长度的数据类型 方法 直接将无符号短长度的数据类型的数据作为长长度的数据类型数据的低位部分 长长度的数据类型数据的高位部分补零 无符号短长度的数据类型 无符号或有符号长长度的数据类型 xx x 无符号短长度的数据类型 0 0 0 高位部分补0 例如 unsignedcharch 0 xfc unsignedinta 0 xff00 假设int数据为16位intb unsignedlongu b ch b的值将是0 x00fcu a u的值将是0 x0000ff00 如果将ch的值赋给 4 问b的值又是多少呢 0 x00fc 2 强制类型转换符 自动转换 1 短长度的数据类型 长长度的数据类型 方法 直接将有符号短长度的数据类型的数据作为长长度的数据类型数据的低位部分 然后将低位部分的最高位 即有符号短长度数据的符号位 向长长度的数据类型数据的高位部分扩展 有符号短长度的数据类型 无符号或有符号长长度的数据类型 zx x 有符号短长度的数据类型 z 符号位向高位部分扩展 z z 符号位 例如 charch 2 inta 2 intb unsignedlongu b ch b的值将是2u a u的值将是0 xfffffffe 2 强制类型转换符 自动转换 2 长长度的数据类型 短长度的数据类型 方法 直接截取长长度的数据类型数据的低位部分 长度为短长度的数据类型的长度 作为短长度数据类型的数据 例如 inta 32768 假设int数据为16位unsignedlongb 0 xffffaa00 charch intc ch a ch的值将是0c b c的值将是0 xaa00 3 长度相同的数据类型转换 方法 数据按照原样复制即可 例如 inta 0 xff00 unsignedintb a b的值将是0 xff00 2 强制类型转换符 强制转换 强制类型转换是通过类型转换运算来实现的 其一般形式为 类型说明符 表达式 功能 把表达式的运算结果强制转换成类型说明符所表示的类型 其中 类型说明符 是强制类型转换符 它的优先级比较高 例 floatx 3 5 y 2 1 z inta a int x y 结果为5z int x y 结果为5 100000z double 3 2 结果为1 000000a int 3 6 结果为3 精度损失问题 注意 在使用强制转换时应注意以下问题 类型说明符和表达式都必须加括号 单个变量可以不加括号 例如 把 int x y 写成 int x y则成了把x转换成int型之后再与y相加了 无论是强制转换或是自动转换 都只是为了本次运算的需要而对变量的数据长度进行的临时性转换 而不改变数据说明时对该变量定义的类型 例如 double a只是将变量a的值转换成一个double型的中间量 其数据类型并未转换成double型 基本算术运算符 结合方向 从左向右优先级 2 3 4 说明 可为单目运算符时 右结合性两整数相除 结果为整数 要求两侧均为整型数据 例 5 2 5 2 0 例 5 2 5 2 1 10 5 1 5 2 5 5 2 3 算术运算符 算术表达式 2 2 5 1 1 1 0 1 表达式和算术表达式 3 算术运算符 算术表达式 表达式 用运算符和括号将运算对象 常量 变量和函数等 连接起来的 符合 语言语法规则的式子 算术表达式 表达式中的运算符都是算术运算符的表达式 运算符优先级 到目前为止 例 3 5 8 x y 2 1等 自增 自减运算符 作用 使变量值加1或减1种类 前置 i i 先执行i i 1或i i 1 再使用i值 后置i i 先使用i值 再执行i i 1或i i 1 例 j 3 k j j 3 k j j 3 printf d j j 3 printf d j a 3 b 5 c a b a 3 b 5 c a b k 4 j 4 k 3 j 4 4 3 c 20 a 4 c 15 a 4 4 自增自减运算符 符号运算符 负号运算符 减号 既是一个算术运算符 又是一个负号运算符 负号运算符是单目运算符 例如 a 2 那么 a的值就是 2 负号运算符的优先级比较高 与强制类型转换符是同一个级别 自增 自减运算符注意事项 和 运算符只能用于变量 不能用于常量和表达式 因为 和 蕴含着赋值操作 例如 5 a b 都是非法的表达式 负号运算符 和强制类型转换运算符的优先级相同 当这些运算符连用时 按照从右向左的顺序计算 即具有右结合性 两个 和 之间不能有空格 在表达式中 连续使同一变量进行自增或自减运算时 很容易出错 所以最好避免这种用法 例如 i 是非法的 自增 自减运算 常用于循环语句中 使循环控制变变量加 或减 以及指针变量中 使指针指向下 或上 一个地址 4 自增自减运算符 符号运算符 例 intp i 2 j 3 p i p i p i j p i j p i j p i j p i j p i j p i i p i p i i p i 2 3 5 3 3 4 2 2 4 3 2 4 4 8 4 5 算术运算符中数据类型转换规则 includevoidmain floata b c a 7 2 计算7 2得int型值3 因此a的值为3 0b 7 2 1 0 计算7 2得int型值3 再与1 0相乘 因此b的值为3 0c 1 0 7 2 先计算1 0 7得double型的结果7 0 然后再计算7 0 2 因此c的值是3 5printf a f b f c f a b c a 3 000000 b 3 000000 c 3 500000 6 逗号运算符 逗号表达式 位运算符 逗号表达式 用逗号连接起来的表达式 其一般形式为 表达式1 表达式2 表达式k 优先级 优先级最低 结合性 左结合性 即逗号表达式的求值顺序是从左向右依此计算用逗号分隔的各表达式的值 逗号表达式的值 最后一个表达式的值就是整
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025合同期解除劳动合同书
- 2025年美术教师应聘能力评估综合试题(附答案)
- 工业互联网平台安全防护技术演进与典型案例2025年回顾报告
- 雅思考试1月真题及答案
- 2025赠与合同范本全文
- 2025年一级建造师《(市政公用工程)管理与实务》考试真题及答案
- 2025年质量员之市政质量基础知识考试题库(含答案)
- 2025林果种植技术合作合同范本
- 2025年钢筋工技师及高级技师模拟试题及答案
- 2025年版劳务班组工作合同模板版B版
- 项目七前厅服务与数字化运营81课件
- 2025年体育组织行业研究报告及未来行业发展趋势预测
- 采购进口生蚝合同协议书
- 成本分析表-产品成本构成
- 2024年云南航空产业投资集团招聘考试真题
- 2025年山东快递工程专业职称考试(快递设施设备知识·技术员、助理工程师)历年参考题库含答案详解(5卷)
- 蓝莓种植加工一体化发展项目可行性研究报告写作模板-申批备案
- 2025年秋季新学期教学工作会议校长讲话:一心一意抓质量一点一滴见成效一步一脚印做教学
- 2025年汽车驾驶员技师资格证书考试及考试题库含答案
- 消防消控室设备管理制度
- 项目现场伙食费管理办法
评论
0/150
提交评论