第三章数据类型、运算 符与表达式 学习目的与要求:1.掌握基本类型及其常量的表示法。 2.重点掌握变量的定义及其初始化方法 3.掌握运算符与表达式的概念。 4.理解C语言的自动类型转换和强制类型转换、赋值的概念。 1.数据类型。 2.变量的定义与使用。 3.算术运算符 4.自增、自减运算符。 第1讲 知识归纳 1.C语言数据类型 (1)基本类型:整型、字符型、实型、枚举型。 (2)构造类型:数组类型、结构体类型、共用体类型 (3)指针类型 (4)空类型 2.常量 (1)什么是常量:在程序运行中,其值不变的量。如123,3.14 (2)符号常量:用一个标识符代表一个常量。符号常量名常用大写,以区别变量 例如:# define Pl3.1415926 符号常量的定义格式:# define符号常量表达式 3.变量 (1)什么是变量:在程序运行中,其值可以改变的量。如intx=3;x=5; (2)标识符的命名规则: 只能使用字母、数字、下划线 必须以字母、下划线打头; ·大小写字符区分;
第三章 数据类型、运算 符与表达式 学习目的与要求:1. 掌握基本类型及其常量的表示法。 2. 重点掌握变量的定义及其初始化方法。 3. 掌握运算符与表达式的概念。 4. 理解 C 语言的自动类型转换和强制类型转换、赋值的概念。 重点: 1. 数据类型。 2. 变量的定义与使用。 3. 算术运算符。 4. 自增、自减运算符。 第 1 讲 知识归纳 1. C 语言数据类型 (1) 基本类型:整型、字符型、实型、枚举型。 (2) 构造类型:数组类型、结构体类型、共用体类型。 (3) 指针类型。 (4) 空类型。 2. 常量 (1) 什么是常量:在程序运行中,其值不变的量。如 123 ,3.14。 (2) 符号常量:用一个标识符代表一个常量。符号常量名常用大写,以区别变量。 例如: #define PI 3.1415926 符号常量的定义格式: #define 符号常量 表达式 3. 变量 (1) 什么是变量:在程序运行中,其值可以改变的量。如 int x =3 ; x=5; (2) 标识符的命名规则: 只能使用字母、数字、下划线; 必须以字母、下划线打头; 大小写字符区分;
第二部分¢语言程序设计同步训练 103 关键字不能用作标识符 (3)变量要“先定义,赋值后,再使用”。 4.整型数据 (1)整型变量的表示方法及其相互之间的转换:十进制、二进制、八进制、十六进制 (2)整型分类 g, unsigned short, unsigned int, unsigned long (3)注意:整型数据的溢出问题。 请记住int, unsigned int所适用的数据范围 int(或 short)-32768-32767 unsigned int 0-65535 5.实型数据 (1)实型数据的表示方法 小数形式一—必须有小数点。 指数形式——字母E(或e)前必须有数字,E后指数必须为整数 (2)实型的分类:foat, double s (3)注意:实型数据的舍入误差。 请记住foat, double两种类型的有效数字位数。 foat—一有效数字为7位数。 double——一有效数字为16位数。 基础训练(A 、填空题 1.C程序中数据有 和 之分,其中,用一个标识符代表一个常量的 称为 常量。C语言规定在程序中对用到的所有数据都必须指定其类型,对 变量必须做到先 后使用。 2.C语言所提供的基本数据类型包括:单精度型、双精度型 3在C语言中的实型变量分为两种类型,它们是 和 4.C语言中的构造类型有 类型、 类型和 类型三种。 5.在C语言中,以16位PC机为例,一个char型数据在内存中所占的字节数为 一个int型数据在内存中所占的字节数为 nt型数据的取值范围为 6.在C语言中,以16位PC机为例,一个foat型数据在内存中所占的字节数为 个 double型数据在内存中所占的字节数为 7.C语言中的标识符只能由三种字符组成,它们是 且第一个字符必须为 8.5432lE2在常规表示法中表示为 ,327876在科学表示法中表示 为
第二部分 C 语言程序设计同步训练 ·103· ·103· 关键字不能用作标识符。 (3) 变量要“先定义,赋值后,再使用”。 4. 整型数据 (1) 整型变量的表示方法及其相互之间的转换:十进制、二进制、八进制、十六进制 (2) 整型分类: short , int , long , unsigned short, unsigned int, unsigned long (3) 注意:整型数据的溢出问题。 请记住 int , unsigned int 所适用的数据范围: int(或 short) -32768——32767 unsigned int 0——65535 5. 实型数据 (1) 实型数据的表示方法: 小数形式——必须有小数点。 指数形式——字母 E (或 e)前必须有数字,E 后指数必须为整数。 (2) 实型的分类:float,double。 (3) 注意:实型数据的舍入误差。 请记住 float , double 两种类型的有效数字位数。 float——有效数字为 7 位数。 double——有效数字为 16 位数。 基础训练(A) 一、填空题 1. C 程序中数据有 和 之分,其中,用一个标识符代表一个常量的, 称为 常量。C 语言规定在程序中对用到的所有数据都必须指定其 类型,对 变量必须做到先 ,后使用。 2. C 语言所提供的基本数据类型包括:单精度型、双精度型、 、 、 。 3. 在 C 语言中的实型变量分为两种类型,它们是 和 。 4. C 语言中的构造类型有 类型、 类型和 类型三种。 5. 在 C 语言中,以 16 位 PC 机为例,一个 char 型数据在内存中所占的字节数为 ; 一个 int 型数据在内存中所占的字节数为 ,int 型数据的取值范围为 。 6. 在 C 语言中,以 16 位 PC 机为例,一个 float 型数据在内存中所占的字节数为 ; 一个 double 型数据在内存中所占的字节数为 。 7. C 语言中的标识符只能由三种字符组成,它们是 、 和 。 且第一个字符必须为 。 8. 5.4321E2 在常规表示法中表示为 ,327.876 在科学表示法中表示 为 。
C语言程序设计上机指导与同步训练 9.常量123456789123L占用 字节存储空间 10.负数在计算机中是以 形式表示。 11.单精度型实数的有效位是 位,双精度型实数的有效位是位。 12.写出下列数所对应的其他进制数。 B=( (75)=( 选择题 1.以下选项中属于C语言的数据类型是()。 A)复数型B)逻辑型C)双精度型D)集合型 2.下列常数中不能作为C的常量的是()。 A)0xA5B)2.5e-2 D)0582 3.在C语言中,数字029是一个() A)八进制数B)十六进制数C)十进制数D)非法数 4C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符() A)必须为字母 B)必须为下划线 C)必须为字母或下划线 D)可以是字母、数字和下划线中任一种字符 5.设C语言中,一个int型数据在内存中占两个字节,则 unsigned int型数据的取值范 围为() A)0~255B)0~32767C)0~65535D)0~2147483647 6.下不正确的C语言标识符是( A)int B)a 1 2 7.以下是正确的C语言标识符是( A)#define B)123 C)%d 8.在C语言中,错误的int类型的常数是() A)32768B)0 C)037 D)OXAF 9.执行语句 printf("%x",-1):屏幕显示() A)-1 B)1 C)-ffif D)ffff 10.将字符g赋给字符变量c,正确的表达式是() A)c=147B)c="47 C)c=147 D)c=0147 1.为求出s=10的值,则变量s的类型应当为() A)int B)unsigned C)long D)以上三种类型均可 能力提高(B) 、选择题 1.下面四个选项中,均不合法的用户标识符的选项是() A)P O B)float la0
·104· C 语言程序设计上机指导与同步训练 ·104· 9. 常量 123456789123L 占用 字节存储空间。 10. 负数在计算机中是以 形式表示。 11. 单精度型实数的有效位是 位 ,双精度型实数的有效位是 位 。 12. 写出下列数所对应的其他进制数。 (32)D =( ) B= ( )O = ( )H (75)D=( ) B =( )O = ( )H 二、选择题 1. 以下选项中属于 C 语言的数据类型是( )。 A) 复数型 B) 逻辑型 C) 双精度型 D) 集合型 2. 下列常数中不能作为 C 的常量的是( )。 A) 0xA5 B) 2.5e-2 C) 3e2 D) 0582 3. 在 C 语言中,数字 029 是一个( )。 A) 八进制数 B) 十六进制数 C) 十进制数 D) 非法数 4. C 语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )。 A) 必须为字母 B) 必须为下划线 C) 必须为字母或下划线 D) 可以是字母、数字和下划线中任一种字符 5. 设 C 语言中,一个 int 型数据在内存中占两个字节,则 unsigned int 型数据的取值范 围为( )。 A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 6. 下不正确的 C 语言标识符是( )。 A) int B) a_1_2 C) ab1exe D) _x 7. 以下是正确的 C 语言标识符是( )。 A) #define B) _123 C) %d D) \n 8. 在 C 语言中,错误的 int 类型的常数是( )。 A) 32768 B) 0 C) 037 D) 0xAF 9. 执行语句 printf("%x",-1);屏幕显示( )。 A) –1 B) 1 C) –ffff D) ffff 10. 将字符 g 赋给字符变量 c,正确的表达式是( )。 A) c=\147 B) c="\147" C) c='\147' D) c='0147' 11. 为求出 s=10!的值,则变量 s 的类型应当为( )。 A) int B) unsigned C) long D) 以上三种类型均可 能力提高(B) 一、选择题 1. 下面四个选项中,均不合法的用户标识符的选项是( )。 A) P_0 do B) float la0 _A
第二部分¢语言程序设计同步训练 C)b-a go D)123 2.下面四个选项中,均是合法整型常量的选项是()。 A)160 0l1 B)-Oxcdf ola Oxe 986,012 0668 D)-0x48a2e5 3.下面四个选项中,均是不合法的整型常量的选项是() A)-ofI B)-0Xcd017 C)-018 999 5e2 D)-0X48eg-068 4.下面四个选项中,均是不合法的浮点数的选项是()。 A)160 B)123 2e4.2 0.0 5.下面四个选项中,均是合法浮点数的选项是()。 A)+le+ 5e-94 03e2 B)-60 -8c5 C)123e 1.2e-4 +2e-1 6.下面四个选项中,均是不正确的八进制数或十六进制数的选项是()。 A)016 0x8f018 B)Oabc 017 0x11 D)Oa12 7.下面四个选项中,均是正确的八进制数或十六进制数的选项是()。 A)-10 0x8f-011 B)Oabc 0170xc C)0010 8.在C语言中,int、char和 short三种类型数据在内存中所占用的字节数()。 A)由用户自己定义 B)均为2个字节 C)是任意的 D)由所用机器的机器字长决定 9.C语言中整数-8在内存中的存储形式是() A)1111 1111 1111 1000 B)100000000001000 C)000000000001000 D)11111111 1111 011 10.在C语言中(以16位PC机为例,5种基本数据类型的存储空间长度的排列顺序为
第二部分 C 语言程序设计同步训练 ·105· ·105· C) b-a goto int D) _123 temp INT 2. 下面四个选项中,均是合法整型常量的选项是( )。 A) 160 -0xffff 011 B) -0xcdf 01a 0xe C) -01 986,012 0668 D) -0x48a 2e5 0x 3. 下面四个选项中,均是不合法的整型常量的选项是( )。 A) -0f1 -0xffff 0011 B) -0Xcdf 017 12,456 C) -018 999 5e2 D) -0x48eg -068 03f 4. 下面四个选项中,均是不合法的浮点数的选项是( )。 A) 160. 0.12 e3 B) 123 2e4.2 .e5 C) -.18 123e4 0.0 D) -e3 .234 1e3 5. 下面四个选项中,均是合法浮点数的选项是( )。 A) +1e+1 5e-9.4 03e2 B) -.60 12e-4 -8e5 C) 123e 1.2e-.4 +2e-1 D) -e3 .234 5.e-0 6. 下面四个选项中,均是不正确的八进制数或十六进制数的选项是( )。 A) 016 0x8f 018 B) 0abc 017 0xa C) 010 -0x11 0x16 D) 0a12 7ff -123 7. 下面四个选项中,均是正确的八进制数或十六进制数的选项是( )。 A) -10 0x8f -011 B) 0abc -017 0xc C) 0010 -0x11 0xf1 D) 0a12 -0x123 -0xa 8. 在 C 语言中,int、char 和 short 三种类型数据在内存中所占用的字节数( )。 A) 由用户自己定义 B) 均为 2 个字节 C) 是任意的 D) 由所用机器的机器字长决定 9. C语言中整数-8 在内存中的存储形式是 ( )。 A) 1111 1111 1111 1000 B) 1000 0000 0000 1000 C) 0000 0000 0000 1000 D) 1111 1111 1111 0111 10. 在 C 语言中(以 16 位 PC 机为例),5 种基本数据类型的存储空间长度的排列顺序为
C语言程序设计上机指导与同步训练 () B)chariot<lor C)char<int<long int=float=double 判断题 1.常量35456与常量23所占用的存储空间一样大。 -653是有符号数,653是无符号数。 3.许多编译系统将实型常量作为单精度来处理。 4.在C语言中,大写字母和小写字母被认为是两个不同的字符。 5.如果不指定整数为 unsigned或指定 signed,则存储单元中最高位代表符号(0为正,1 为负)。 第2讲 知识归纳 1.字符型数据 (1)字符常量概念:用单引号括起来的一个字符,如‘a’:在内存中占一个字节。 (2)转义字符:占一个字节。 三类控制输出格式的:hn,t,b,lr,f 控制三个特殊符号输出的:,, 表示任何可输出的字母字符、专用字符、图形字符和控制字符: ldd-1到3位八进制数所代表的字符 kh-x开头,1到2位十六进制数 (3)字符数据的存储(字符数据的ASCI值),决定了字符数据与整型数据,在-128~127 范围内可以通用 2.字符串数据 (1)字符串常量概念:用双引号括起来的若干个字符,如“abed (2)字符串结束标志问题:系统为了区分字符串和字符常量,自动的在字符串后增加 个结束标志0°,因此,一个字符的长度应该是字个款+1 注意:你分清“A”和A了吗?,它们的长度是否相同? 3.各类数值型数据间的混合运算 (1)在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。 (2)转换规则:
·106· C 语言程序设计上机指导与同步训练 ·106· ( )。 A) char<int<long int<=float<double B) char=int<long int<=float<double C) char<int<long int=float=double D) char=int=long int<=float<double 二、判断题 1. 常量35456与常量23所占用的存储空间一样大。 ( ) 2. -653是有符号数,653是无符号数。 ( ) 3. 许多编译系统将实型常量作为单精度来处理。 ( ) 4. 在C语言中,大写字母和小写字母被认为是两个不同的字符。 ( ) 5. 如果不指定整数为unsigned或指定signed,则存储单元中最高位代表符号(0为正,1 为负)。 ( ) 第 2 讲 知识归纳 1. 字符型数据 (1) 字符常量概念:用单引号括起来的一个字符,如‘a’;在内存中占一个字节。 (2) 转义字符:占一个字节。 三类控制输出格式的 :\n , \t , \b , \r , \f 控制三个特殊符号输出的: \\ , \’ , \” 表示任何可输出的字母字符、专用字符、图形字符和控制字符: \ddd —1 到 3 位八进制数所代表的字符; \xhh —x 开头,1 到 2 位十六进制数; (3) 字符数据的存储(字符数据的 ASCII 值),决定了字符数据与整型数据,在-128~127 范围内可以通用。 2. 字符串数据 (1) 字符串常量概念:用双引号括起来的若干个字符,如 “abcd”。 (2) 字符串结束标志问题:系统为了区分字符串和字符常量,自动的在字符串后增加 一个结束标志‘\0’,因此,一个字符串的长度应该是字符个数+1 。 注意:你分清“A”和‘A’了吗?,它们的长度是否相同? 3. 各类数值型数据间的混合运算 (1) 在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。 (2) 转换规则:
第二部分¢语言程序设计同步训练 107 double< float unsigned 由肉 char. short 水平力向自动生 4.基本的算术运算符:*,/,%,+, 注意:(1)先乘除、求余,后加减。 (2)对于/,两个整数相除,结果仍为整数;如5/2,结果为:2 (3)%运算符,只对整型数据有效;如5%2,结果为:1 5.0%2 5.强制类型转换 (1)强制类型转换的格式:(类型名)(表达式) (2)说明:强制类型转换未改变变量存储空间中的值。 如 float x=13.7 (int)x 值:13,但ⅹ的值仍位13.7,类型仍为foat 基础训练(A) 填空题 1.C语言的字符常量是用 引号括起来的 个字符,而字符串常量是用 号括起来的 序列 2.C语言规定:在一个字符串的结尾加一个 标志“V0°。 3.C语言中,字符型数据和 数据之间可以通用。 4.字符串" abce"长度为 ,占用 字节的空间。 5.假设已指定i为整型变量,f为foat变量,d为 double型变量,e为long型变量, 有式子10+a+i*fde,则结果为 型 6.若有定义: char c=“W00’;则变量c中包含的字符个数为 7.若有定义:intx=3y=2, float a=25,b=3.5;则下面表达式的值为 (x+y)%2+(int )a/(int )b
第二部分 C 语言程序设计同步训练 ·107· ·107· double float long unsigned int char , short 4. 基本的算术运算符:* , / ,%,+,- 注意:(1) 先乘除、求余,后加减。 (2) 对于/,两个整数相除,结果仍为整数;如 5/2,结果为:2。 (3) % 运算符,只对整型数据有效;如 5%2,结果为:1。 5.0%2 × 5. 强制类型转换 (1) 强制类型转换的格式:(类型名) (表达式); (2) 说明:强制类型转换未改变变量存储空间中的值。 如 float x = 13.7 ; (int) x ; 值:13,但 x 的值仍位 13.7,类型仍为 float。 基础训练(A) 一、填空题 1. C 语言的字符常量是用 引号括起来的 个字符,而字符串常量是用 号括起来的 序列。 2. C 语言规定:在一个字符串的结尾加一个 标志‘\0’。 3. C 语言中,字符型数据和 数据之间可以通用。 4. 字符串"abcke"长度为 ,占用 字节的空间。 5. 假设已指定 i 为整型变量,f 为 float 变量,d 为 double 型变量,e 为 long 型变量, 有式子 10+'a'+i*f-d/e,则结果为 型。 6. 若有定义:char c=‘\010’;则变量 c 中包含的字符个数为 。 7. 若有定义:int x=3,y=2; float a=2.5,b=3.5;则下面表达式的值为 。 (x+y)%2+(int)a/(int)b 水平方向,自动发生 垂 直 方 向 由 低 向 高
108· C语言程序设计上机指导与同步训练 8.若s为整型变量,且s=6,则表达式s%2+(s+1)%2的值为 9.在ASCⅡ代码表中可以看到每一个小写字母比它相应的大写字母ASCⅡ码 大 (十进制数) 10.5/3的值为 ,50/3的值为 、选择题 1.字符串""的长度是()。 A)0 C)2 D)非法字符串 2.在C语言中,合法的字符常量是 A)"08 B)x48 C)'ab 3.下列不正确的转义字符是:() B)" C)074 4.下面不正确的字符串常量是() A) 5.若有说明语句 char c=72则变量c()。 A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法,c的值不确定 6.在C语言中,char型数据在内存中的存储形式是:()。 A)补码 B)反码C)原码 D) ASCII il 7.下面正确的字符常量是()。 B)41 )w 8.下面四个选项中,均是合法转义字符的选项是()。 C)018’f D)“1001xlf 9.下面四个选项中,均是不合法的转义字符的选项是() A)“” f B)Ⅵ011 101 10.已知字母A的ASCI码为十进制数65,且c2为字符型,则执行语句c2=A+6-3 后,c2中的值为()。 B)68 C)不确定的值 D)C 1.若有代数式3e,则不正确的C语言表达式是() A)a/b/c*e*3 B)3*a*e/b/c D)a**e/c/b*3
·108· C 语言程序设计上机指导与同步训练 ·108· 8. 若 s 为整型变量,且 s=6,则表达式 s%2+(s+1)%2 的值为 。 9. 在 ASCII 代码表中可以看到每一个小写字母比它相应的大写字母 ASCII 码 大 (十进制数)。 10. 5/3 的值为 ,5.0/3 的值为 。 二、选择题 1. 字符串" "的长度是( )。 A) 0 B) 1 C) 2 D) 非法字符串 2. 在 C 语言中,合法的字符常量是:( ) A) '\084' B) '\x48' C) 'ab' D) "\0" 3. 下列不正确的转义字符是;( ) A) '\\' B) '\" C) '074' D) '\0 4. 下面不正确的字符串常量是( )。 A) 'abc' B) "12'12" C) "0" D) "" 5. 若有说明语句:char c='\72'则变量 c ( )。 A) 包含 1 个字符 B) 包含 2 个字符 C) 包含 3 个字符 D) 说明不合法,c 的值不确定 6. 在C语言中,char型数据在内存中的存储形式是:( )。 A) 补码 B) 反码 C) 原码 D) ASCII 码 7. 下面正确的字符常量是( )。 A) ”c” B) ‘\\” C) ‘W’ D) ‘ ‘ 8. 下面四个选项中,均是合法转义字符的选项是( )。 A) ‘\’ ‘\\’ ‘\n’ B) ‘\’ ‘\017’ ‘\”’ C) ‘\018’ ‘\f’ ‘xab’ D) ‘\\0’ ‘\101’ ‘x1f’ 9. 下面四个选项中,均是不合法的转义字符的选项是( )。 A) ‘\”’ ‘\\’ ‘\xf’ B) ’\1011’ ‘\’ ‘\a’ C) ’\011’ ‘\f’ ‘\}’ D) ‘\abc’ ‘\101’ ‘xlf’ 10. 已知字母 A 的 ASCII 码为十进制数 65,且 c2 为字符型,则执行语句 c2=’A’+’6’-‘3’; 后,c2 中的值为( )。 A) D B) 68 C) 不确定的值 D) C 11. 若有代数式 3ae bc ,则不正确的 C 语言表达式是( )。 A) a/b/c*e*3 B) 3*a*e/b/c C) 3*a*e/b*c D) a*e/c/b*3
第二部分¢语言程序设计同步训练 12.在C语言中,要求运算数必须是整型的运算符是()。 A)/ B)++ C)!= D)% 13.设有说明: char w,intx;, float y, double z,则表达式w*x+zy值的数据类型为() A)float B)cha C)int D)double 14.若有定义:inta=7, float x=2.5y=47则表达式x+a%3*(int)x+y)%2/4的值是() A)2.500000B)2.750000C)3.500000 D)000000 能力提高(B) 、填空题 1.字符串" lineonelxOalinetwo\2"的长度为 2.将下面的语句补充完整,使得chl和ch2都被初始化为字母D,但要用不同的方法: char c char c 3.若有定义:inte=1,f=4,g=2; float m=105n=40k,则执行赋值表达式k=(e+n/g+sqrt ( double )n)*12g+m后k的值是 4.若x和y都是 double型变量,且x的初值为30,y的初值为20,则表达式pow(y,fabs(x) 的值为 、选择题 1.若有代数式yyx+ + logo,则正确的C语言表达式是() A)sqrt(fabs(pow(y, x)+log(y))) B)sqrt(abs(pow(y, x)+log(y))) C)sqrt(fabs( pow(x, y)+log(y))) D)sqrt(abs(pow(x, y)+logy)) 2.设变量n为foat类型,m为nt类型,则以下能实现将n中的数值保留小数点后两 位,第三位进行四舍五入运算的表达式是()。 A)n=(n*100+0.5/100.0 B)m=n*100+0.5n=m/100.0 C)n=n*100+0.5/100.0 D)n=(n/100+0.5)*100.0 3.表达式18/4*sq(40)8值的数据类型为()。 A)int B)float C)double D)不确定 4. sizeof( float是 A)一个双精度型表达式 B)一个整型表达式 C)一种函数调用 D)一个不合法的表达式 5.若有以下定义和语句: char cl=a, c2=f printf("%d, %cIn", c2-cl, c2-a'+'B); 则输出结果是( A)2, M B)5,! C)2,E D)5,G 三、设有变量定义: char ch;如下语句是否等价,说明原因 ch=A ch=41
第二部分 C 语言程序设计同步训练 ·109· ·109· 12. 在 C 语言中,要求运算数必须是整型的运算符是( )。 A) / B) ++ C) != D) % 13. 设有说明:char w; int x; float y; double z;则表达式 w*x+z-y 值的数据类型为( )。 A) float B) char C) int D) double 14. 若有定义:int a=7; float x=2.5,y=4.7;则表达式 x+a%3*(int)(x+y)%2/4 的值是( )。 A) 2.500000 B) 2.750000 C) 3.500000 D) 0.000000 能力提高(B) 一、填空题 1. 字符串"lineone\x0alinetwo\12"的长度为 。 2. 将下面的语句补充完整,使得 ch1 和 ch2 都被初始化为字母 D,但要用不同的方法: char ch1= , char ch2= 。 3. 若有定义:int e=1,f=4,g=2; float m=10.5,n=4.0,k;则执行赋值表达式 k=(e+f) /g +sqrt ((double)n)*1.2/g+m 后 k 的值是 。 4. 若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x)) 的值为 。 二、选择题 1. 若有代数式 y + log10 y x ,则正确的 C 语言表达式是( )。 A) sqrt(fabs(pow(y,x)+log(y))) B) sqrt(abs(pow(y,x)+log(y))) C) sqrt(fabs(pow(x,y)+log(y))) D) sqrt(abs(pow(x,y)+log(y))) 2. 设变量 n 为 float 类型,m 为 int 类型,则以下能实现将 n 中的数值保留小数点后两 位,第三位进行四舍五入运算的表达式是( )。 A) n=(n*100+0.5)/100.0 B) m=n*100+0.5,n=m/100.0 C) n=n*100+0.5/100.0 D) n=(n/100+0.5)*100.0 3. 表达式 18/4*sqrt(4.0)/8 值的数据类型为( )。 A) int B) float C) double D) 不确定 4. sizeof (float)是( )。 A) 一个双精度型表达式 B) 一个整型表达式 C) 一种函数调用 D) 一个不合法的表达式 5. 若有以下定义和语句: char c1='a', c2='f'; printf("%d,%c\n",c2-c1,c2-'a'+'B'); 则输出结果是:( ) A) 2 ,M B) 5,! C) 2,E D) 5,G 三、设有变量定义:char ch; 如下语句是否等价,说明原因 ch=’A’; ch=’\x41’;
C语言程序设计上机指导与同步训练 ch=101 ch=0101; 第3讲 知识归纳 1.自增、自减运算符 ++i(-i),先变值,后使用; i++(i--),先使用,后变值 注意:(1)只能用于变量,而不能用于常量或表达式; 5++; x+v)++ 2.赋值运算符 变量=表达式:;∥说明:赋值运算符优先级非常低 (1)在使用赋值运算符时,赋值号左端一定是变量。 (2)在使用赋值运算符时,应尽量使赋值号左端的变量与赋值号右端的表达式类型 致,否则,自动发生强制类型转换 (3)大类型变量=小类型数据:小类型数据进入低位,高位按符号位扩展。 小类型变量=大类型数据;大类型数据低位进入变量,高位被截断。 3.复合赋值运算符:+=,-=,*=,/=,%= (1)运算规则:a+=b+c; 分解运算步骤:先求a+(b+c)的值 然后将求出的值赋值给a;即a=a+(b+c) (2)结合方向:右结合。 4.逗号运算符 逗号表达式:表达式1,表达式2,表达式3,…,表达式n 运算规则:从左向右依次运算每一个表达式,逗号表达式的结果就是最后一个表达式 的值。 基础训练(A) 、填空题 1.自增运算符++、自减运算符-,只能用于 不能用于常量或表达式。 2.++和一的结合方向是“自 ·110
·110· C 语言程序设计上机指导与同步训练 ·110· ch=’\101’; ch=65; ch=0101; ch=0x41; 第 3 讲 知识归纳 1. 自增、自减运算符 + + i (- - i ) , 先变值 ,后使用; i + + ( i - - ) ,先使用 ,后变值 ; 注意:(1) 只能用于变量 ,而不能用于常量或表达式; 如:x ++; √ 5++ ; × (x + y )++; × 2. 赋值运算符 变量= 表达式;//说明:赋值运算符优先级非常低。 (1) 在使用赋值运算符时,赋值号左端一定是变量。 (2) 在使用赋值运算符时,应尽量使赋值号左端的变量与赋值号右端的表达式类型一 致,否则,自动发生强制类型转换。 (3) 大类型变量 = 小类型数据 ;小类型数据进入低位 ,高位按符号位扩展。 小类型变量 = 大类型数据;大类型数据低位进入变量 ,高位被截断。 3. 复合赋值运算符:+= , - = , * = , /= , % = (1) 运算规则: a + = b+c ; 分解运算步骤 : 先求 a + (b+c) 的值; 然后将求出的值赋值给 a ; 即 a = a + (b+c)。 (2) 结合方向:右结合。 4. 逗号运算符 逗号表达式:表达式 1,表达式 2,表达式 3,…,表达式 n ; 运算规则:从左向右依次运算每一个表达式,逗号表达式的结果就是最后一个表达式 的值。 基础训练(A) 一、填空题 1. 自增运算符++、自减运算符--,只能用于 ,不能用于常量或表达式。 2. ++和--的结合方向是“自 至
第二部分¢语言程序设计同步训练 111 3.赋值运算符的作用是将一个数据赋给一个 4.若逗号表达式的一般形式是:表达式1,表达式2 则:逗号表达式的求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的 值是 的值 5.逗号运算符是所有运算符中级别最 的 6.假设所有变量均为整型,则表达式(a=2,b=5a++,b++,a+b)的值为 7.假设变量a、b均为整型,以下语句借助中间变量t把a、b的值进行交换,即:把 b中的值给a,把a中的值的给b。例如:交换前,a=10,b=20,交换后,a=20,b=10。请 填空。 8.若a是int型变量,则执行下面表达式后a的值为 9.若x和n均是nt型变量,且x和n的初值均为5,则执行下面表达式后x的值为 的值为 X+=n++ 10.若x和a均是int型变量,则执行表达式(1)后的x值为,执行表达式(2) 后的x值为 (1)X=(a=4,6*2) (2)X=a=4,6*2; 11.若a、b和c均是int型变量,则执行下面表达式后,a值为 ,b值为 值为 a=(b=4)+(c=2) 选择题 1.已知ch是字符型变量,下面不正确的赋值语句是()。 A)ch=‘a+b’;B)ch=“0 C)ch=7+‘9;D)ch=5+9 2.已知ch是字符型变量,下面正确的赋值语句是()。 B)ch=wft;C)ch=“08 D)ch=“” 3.以下能正确地定义整型变量a,b和c并为其赋初值5的语句是()。 D)a=b=c=5 4.若有以下定义,则正确的赋值语句是() int a. b: float x. A)a=1,b=2, C)a=b=5 D)b=int(x) 5.以下符合C语言语法的赋值表达式是()。 A)d=9+e+f=d+9;B)d=9+e,f=d+9:C)d=9+e,e+,d+9;Dd=9+e++=d+7; 6.设以下变量均为int类型,则值不等于7的表达式是() A)(x=y=6X+y,x+1;) B)(x=y=6,x+yy+1;) C)(X=6,x+12=6,x+y;) D)(y=6y+1x=yx+1:) 7.设x、y和z均为int型变量,则执行语句x=y=(z=10)+5)5后,x、y和z的值是() A)x=10 BXI C)x=10 D)X=10
第二部分 C 语言程序设计同步训练 ·111· ·111· 3. 赋值运算符的作用是将一个数据赋给一个 。 4. 若逗号表达式的一般形式是:表达式 1,表达式 2 则:逗号表达式的求解过程是:先求解表达式 1,再求解表达式 2,整个逗号表达式的 值是 的值。 5. 逗号运算符是所有运算符中级别最 的。 6. 假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为 。 7. 假设变量 a、b 均为整型,以下语句借助中间变量 t 把 a、b 的值进行交换,即:把 b 中的值给 a,把 a 中的值的给 b。例如:交换前,a=10,b=20,交换后,a=20,b=10。请 填空。 。 8. 若 a 是 int 型变量,则执行下面表达式后 a 的值为 。 a=25/3%3 9. 若x和n均是int型变量,且x和n的初值均为5,则执行下面表达式后x的值为 , n 的值为 。 x+=n++ 10. 若 x 和 a 均是 int 型变量,则执行表达式(1)后的 x 值为 ,执行表达式(2) 后的 x 值为 。 (1) x=(a=4,6*2); (2) x=a=4,6*2; 11. 若 a、b 和 c 均是 int 型变量,则执行下面表达式后,a 值为 ,b 值为 , c 值为 。 a=(b=4)+(c=2); 二、选择题 1. 已知 ch 是字符型变量,下面不正确的赋值语句是( )。 A) ch=‘a+b’; B) ch=‘\0’; C) ch=‘7’+‘9’; D) ch=5+9; 2. 已知 ch 是字符型变量,下面正确的赋值语句是( )。 A) ch=‘123’; B) ch=‘\xff’; C) ch=‘\08’; D) ch=“\”; 3. 以下能正确地定义整型变量 a,b 和 c 并为其赋初值 5 的语句是( )。 A) int a=b=c=5, B) int a,b,c=5; C) int a=5,b=5,c=5; D) a=b=c=5; 4. 若有以下定义,则正确的赋值语句是( )。 int a,b; float x; A) a=1,b=2, B) b++; C) a=b=5 D) b=int(x); 5. 以下符合 C 语言语法的赋值表达式是( )。 A) d=9+e+f=d+9; B) d=9+e,f=d+9; C) d=9+e,e++,d+9; D)d=9+e++=d+7; 6. 设以下变量均为 int 类型,则值不等于 7 的表达式是( )。 A) (x=y=6,x+y,x+1;) B) (x=y=6,x+y,y+1;) C) (x=6,x+1,y=6,x+y;) D) (y=6,y+1,x=y,x+1;) 7. 设 x、y 和 z 均为 int 型变量,则执行语句 x=(y=(z=10)+5)-5;后,x、y 和 z 的值是( )。 A) x=10 B) x=10 C) x=10 D) x=10