第2章数据类型和表达式.ppt

上传人:本田雅阁 文档编号:3424424 上传时间:2019-08-24 格式:PPT 页数:96 大小:1.27MB
返回 下载 相关 举报
第2章数据类型和表达式.ppt_第1页
第1页 / 共96页
第2章数据类型和表达式.ppt_第2页
第2页 / 共96页
第2章数据类型和表达式.ppt_第3页
第3页 / 共96页
第2章数据类型和表达式.ppt_第4页
第4页 / 共96页
第2章数据类型和表达式.ppt_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《第2章数据类型和表达式.ppt》由会员分享,可在线阅读,更多相关《第2章数据类型和表达式.ppt(96页珍藏版)》请在三一文库上搜索。

1、主讲教师:贾澎涛 ,C/C+语言程序设计,第二章 数据类型和表达式,本章主要内容,本章介绍C语言的基础,包括: 数据类型 运算符和表达式 均是程序设计的基本知识 为什么讨论这些知识?,2,通常程序要对数据进行操作处理: 处理的对象是数据 通过运算符和表达式进行操作,第2章 数据类型和表达式,2.1 词法构成 字符集 标识符 关键字 注释符,3,重点,ANSI C标准规定的C语言关键字共32个,所有C关键字都必须小写 标识符由132个字符组成,第一个字符必须是字母或下画线,标识符不能与C关键字相同,并区分大小写。 C语句以分号结尾,分号是C语句的组成部分。C语句包括简单语句(即表达式语句)、复合

2、语句和空语句。,4,例题解析,1.下列四个叙述中,正确的是。 A) C程序中的所有字母都必须小写 B) C程序中的关键字必须小写,其他标识符不区分大小写 C) C程序中的所有字母都不区分大小写 D) C语言中的所有关键字必须小写 2.下面属于C语言保留字的是_。 A) Int B) typedef C)ENUM D)unien,5,你能回答下面问题吗?,3.以下叙述正确的是_ A) 可以把define和if定义为用户标识符 B) 可以把define定义为用户标识符,但不能把if定义为用户标识符 C) 可以把if定义为用户标识符,但不能把出define定义为用户标识符 D) define和if都

3、不能定义为用户标识符 4. 以下选项中合法的用户标识符是。 A) long B) _2Test C) 3Dmax D) A.dat,6,5.下列标识符中正确的一组是_ A) name, char, _abc, A$ B) abc.c, 5bytes, _USA, _54321 C) print, const, type, define D) include, integer, Double, short_int 6.下面的单词中属于C语言保留字的是_ A) Long B) break C) For D) struction,7,数据类型,基本类型,构造类型,指针类型(),空类型(void),字

4、符型(char),数值类型,枚举类型(enum),数组类型( ),结构体类型(struct),共用体类型(union),整型(short,int,long,unsigbed),实型,单精度型(float),双精度型(double),2.2数据类型,8,重点,C语言提供了五种基本数据类型,即char, int, float,double和void。 数据类型决定了内存的分配模式,即不同的数据类型所占的内存字节数是不同的。内存分配模式不是C语言本身的规定,而是由宿主机硬件决定的。 不同的数据类型允许的数值范围也是不同的,超出了允许的数值范围,就会得到错误的结果。C编译系统不具检查此类错误的能力。

5、C语言对整型和字符型不区分,可以混合使用。,9,例题解析,1. C语言中允许的基本数据类型包括。 A) 整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型 2. C语言中能用八进制数表示的数据类型为 A) 字符型、整型 B)整型、实型 C) 字符型、实型、双精度型 D) 字符型、整型、实型、双精度型,10,你能回答下面问题吗?,2.3常量与变量,2.3.1常量 常量 程序运行过程中不能被改变的量。 整数在计算机中是准确表示的,可以用十进制、八进制和十六进制数表示。当用八进制数表示时,第一位数字前面必须加0;当用十六进制数表示时,第一位数字

6、前而必须加0x:无符号整数的末尾必须加字母u或U;长整数的末尾必颁加字母I或L。 字符型常数是用单引号括住的单个字符。用转义字符表示不可显示字符。转义字符以“”开头,后跟一个特定的字母或八进制数或十六进制数表示的ASCII代码值。,11,用八进制时,前面可以也可以不加数字0;用十六进制数时,前面必须加字母x。 字符串常数是用双引号括住的一串字符。当两个双引号连写时表示零字符串。 C语言将所有的实数都视为双精度型数。双精度数只能用十进制数表示。在计算机中是近似表示的。双精度数用定点数形式表示时,小数点不可缺少;用浮点数形式表示时,E前面必须有数字(带不带小数点均可),E后面只能是整数,不能带小数

7、点。,12,符号常数是用标识符表示的常数,它具有变量的外表和常量的内涵。 用#define定义的符号常数没有类型和值的含义。在预编译时由编译系统将宏名用宏体替换。 define是编译预处理命令,不属于C语言关键字。 用const定义的符号常数既有值又有类型的含义。该定义是在编译阶段完成的。,13,例题解析,1. 下列属于C语言合法的字符常量是_ A)97 B)“A“ C)t D)”0”,14,你能回答下面问题吗?,2.3.2 变量,1. 变量的有关概念 在程序运行过程中,其值改变的数据,称为变量,变量用标识符表示,称为变量名。 变量必须“先定义后使用” 系统为变量分配存储单元,存储变量的值。

8、编写程序时通过变量名来存、取变量值。,15,例如: 有变量a 它的值是510,2. 变量定义,变量定义的一般格式: 【类型修饰符】数据类型说明符 变量列表; 例如:int i, j; long k, m; float x,y; char ch1,ch2;,16,必须使用合法的标识符作变量名 不能使用关键字为变量命名,3. 变量的初始化,允许在说明变量的时候对变量赋初值。 例如:int a=5,b=10+2; double x=23.568,y ; char ch1=a,ch2=66,ch3=142; 表示定义变量并对变量存储单元赋值。 错误的初始化: int a=3+b,b=5; float

9、m=n=23.16;,17,例题解析,1. 若有以下定义和语句: int u=010,v=0x10,w=10; printf(“%d,%d,%dn”,u,v,w); 则输出结果是: A)8,16,10 B)10,10,10 C)8,8,10 D)8,10,10,18,你能回答下面问题吗?,2.4 指针和指针变量,main() float x; int y; ,19,2.4.1 指针和指针变量的概念,变量的两个物理意义,变量的内容,变量的地址,19,2.4.1指针和指针变量的概念,main() int a,b,c; a=5; b=3; c=a +b; ,20,2000 2001 2002 200

10、3 2004 2005,a b c,8,利用变量名存取数据的方式称为“直接存取”方式。,20,C 语言还提供了对内存单元的“间接存取”方式,21,5,3,2004,a和b相加的结果(*p=a+b)存放到变量p所指向的内存单元中去。此时c称为指针变量p的目标变量。,p=&c,8,main() int a=5,b=3,c,*p; p = ,变量的地址称为变量的指针 存放地址的变量称为指针变量,21,2.4.2指针变量的定义,main() int a,*p= ,22,2004,2000,指针变量初始化,22,2.5 运算符和表达式,主要内容: 算术运算符和算术表达式 赋值运算符和赋值表达式 关系运算

11、符和关系表达式 逻辑运算符和逻辑表达式 位运算符和位运算表达式 条件运算符和条件表达式 逗号运算符和逗号表达式 其他运算符及其运算,23,运算符的有关概念,作用: 对运算对象完成规定的操作运算 类型: 按运算对象分: 单目、双目、三目 按功能分: 算术、赋值、关系、逻辑 条件、逗号、位、其他,24,运算符的优先级和结合性,优先级 指各种运算符号的运算优先顺序 例如:算术运算优先于关系运算 算术运算中先 * / 后 + -,25,结合性 指运算符号和运算对象的结合方向 分为:从左向右(左结合)和从右向左(右结合) 例如:算术运算符为左结合 a-b+4 赋值运算符为右结合 a= b = 5 ( )

12、,本章涉及的运算符,+ - * / % + - + - = += -= *= /= %= &= |= = = = ?: , & sizeof (数据类型标识符),26,表达式的有关概念,什么是表达式 由运算符将运算对象连接成的式子,它描述了一个具体的求值运算过程。 计算表达式的值 按照运算符的运算规则求值 求值时注意运算符的优先级和结合性 表达式值的类型 自动转换 强制转换,27,例如:,表达式: 150+b*212.456 b=(+a)-2 a /= a *= (a = 2) f=abc -a |+b&c+ max=ab ? a : b a=3,a+=3,a*a 1/(float)a+6,2

13、8,算术运算,算术运算符的优先级,29,没有乘方运算符,要计算a3要写作 a*a*a 的连乘,或用标准库函数 pow(a, 3) “/”的运算对象可为各种类型数据,但是当进行两个整型数据相除时,运算结果也是整型数据 “%”要求运算对象必须是整型数据,功能是求两数相除的余数,余数的符号与被除数的符号相同。,自增自减运算,+ -是单目运算符 有前缀和后缀两种形式 前缀形式: 先自增(自减)再引用; 后缀形式: 先引用再自增(自减); 功能: 前缀形式 + a 等价于 a = a + 1 - a 等价于 a = a 1 后缀形式 a + 等价于 a = a + 1 a - 等价于 a = a 1,3

14、1,例如:,当 a5 时 +a 表达式的值为 6,且 a6 a+ 表达式的值为5 ,且 a6 b=+a 等价于 a=a+1; b=a 表达式的值为6,且 a=6, b=6 b=a+ 等价于 b=a; a=a+1 表达式的值为5,且 a=6, b=5,32,说明:,+ 和 - 的运算对象只能是变量(或运算结果是变量的表达式), 不能是常量(或运算结果是数值的表达式)。 例如: 5+、(a+2)+ 不合法。 具有右结合性,结合方向为从右到左。 例如: a+ 等价于 -(a+) 如果有多个运算符连续出现时,C系统尽可能多的从左到右将字符组合成一个运算符 例如: i + j 等价于 ( i+)+j -

15、i+-j 等价于 -(i+)+(-j),33,赋值运算,赋值运算符(右结合) = += -= *= /= %= &= |= = = = 赋值表达式 将表达式的值存入变量对应的内存单元中 m=12 b=(+a)-2 m%=3+n 等价于 m=m%(3+n) x *= (x = 5),34,说明:,赋值号左边必须是变量,右边可以是C语言任意合法的表达式 例如:n= t +210 等价于:a= (b=( (b*c)10) ) 赋值号与数学中的等号含义不同 例如:数学中 a=b 等价于 b=a C语言中 a=b 不等价于 b=a,35,关系运算,关系运算符 (左结合) = =c 等价于 a = ( b

16、=c ) 与 (a=b)=c 不等价 关系运算符优先于赋值,低于算术,36,说明:,关系运算的结果应该是逻辑值。C语言用数值用 1 表示逻辑真, 0 表示逻辑假 例如: 75 的值是 1,57 的值是 0 ab的值是 0, ab 的值是1 即关系表达式的值:0 或1 实型数可进行大于或小于比较,但通常不进行 = 或 != 的关系运算,37,逻辑运算符,逻辑运算符 & | ! 逻辑运算符的运算规则,38,逻辑表达式,逻辑表达式 用逻辑运算符将运算对象连接成的式子 例如:0&b a &b | c&d a | b-5 | c/4 !x+y = z 逻辑运算符的优先级 和结合性: !是单目运算符,右结

17、合,高于算术 & 和 | 是双目运算符,左结合,高于赋值运算符,低于关系运算符,39,逻辑运算规则,从左到右依次进行逻辑计算 运算对象为非0表示逻辑真 运算对象为 0 表示逻辑假 逻辑运算的结果为 0 或 1 例如设:a=15,b=0,c=-2 a & b & c 结果为0 a | b | c 结果为1 (a+c) | b & c 结果为1,40,逻辑运算规则(续),运算按照从左至右的顺序进行,一旦能够确定逻辑表达式的值,就立即结束运算 逻辑运算的短路性质 例如设:a=1,b=0,c=-2 a & b & c,41,(a+) | + b& -c,为 0,运算终止,表达式值为 0,为非0,运算终

18、止,表达式值为 1 且a为2,b为0,c为-2 (b,c保持原值),关系与逻辑运算符的应用,表示数学公式abc 判断a, b, c三条线段能否组成一个三角形 a, b不同时为负,42,a+bc & a+cb & b+ca,a=0 | b=0 !(a=0)|(a=0&b=0&b=0),ab & bc,条件表达式运算,条件运算符:? : 条件表达式的一般形式 表达式1 ? 表达式2 : 表达式3 例如:m=10 & b20 ? a : b x=3+a5 ? 100 : 200,43,C语言中唯一的三目运算符,要正确区分用 ?和 :分隔的表达式 涉及条件运算符的优先级与结合性,条件运算符优先级,条件

19、运算符优先级高于赋值、逗号运算符,低于其他运算符 例如: m=10 & b20 ? a : b x=3+a5 ? 100 : 200,44,等价于:(mn) ?(x) :(a+3),等价于:(a+=10 & b20) ? a : b,等价于:x= ( 3+a5 ) ? 100 : 200 ),条件运算符的结合性,条件运算符具有右结合性 当一个表达式中出现多个条件运算符时,应该将位于最右边的问号与离它最近的冒号配对,并按这一原则正确区分各条件运算符的运算对象。,45,例如:wx ? x+w : xy ? x : y 与 wx ? x+w : ( xy ? x : y) 等价 与 (wx ? x+

20、w : xy) ? x : y 不等价,逗号表达式运算,逗号表达式的一般形式 表达式1,表达式2,表达式n 逗号表达式的值 从左向右,依次对表达式求值,最后得到表达式n 的值就是逗号表达式的值,46,例如: a=5, a+, a* 3 表达式值为 18,且a=6 t=1, t+5, t+ 表达式值为 1,且t=2 x=(a=3*5, a*4 ) 赋值表达式的值为60,且x=60, a=15,位运算符, & | ,47,位运算符的运算对象只能是整型数据或字符型数据,不能是实型数据 运算对象一律按二进制补码参加运算,并按位进行运算 位运算的结果是一个整型数据,低于单目、算术运算符,高于其他运算符,

21、低于单目、算术和关系运算符,高于其他运算符,位逻辑运算符的运算规则,假设ai和bi均是一个二进制位(bit),48,例如:假设a=10,b=010 求a&b、 a | b、 ab、a,程序如下:,main( ) int a=10, b=010; printf(“%d %dn“, a ,49,输出结果: 8 10 2 -11,0000 0000 0000 1010 & 0000 0000 0000 1000 0000 0000 0000 1000 即:a&b的值是8,移位运算,例如: ab-1 等价于 (a+8)(b-1),50,例如:假设a=10,b=2,求ab-1,main( ) int a

22、=10, b=2; printf(“%d %dn“, ab-1); ,输出结果: 40 9,请自行分析 运行结果,取地址运算符 &,为单目运算符 运算对象只能是变量 运算结果是变量的存储地址 例如有定义: int a , student; char ch; 可以对变量a、ch、student 进行&运算: &a &ch &student,51,长度运算符 sizeof,为单目运算符 运算对象只能是变量名或数据类型标识符 运算结果为该变量或该数据类型的长度,52,main( ) int a=5; double x; printf(“%d %d “,sizeof(int),sizeof(a); p

23、rintf(“%d %d “,sizeof(double),sizeof(x); printf(“%d %dn“,sizeof(float),sizeof(char); ,输出结果: 2 2 8 8 4 1,运算中数据类型的转换,1.数据类型的自动转换 转换原则:自动将精度低、表示范围小的运算对象类型向精度高、表示范围大的运算对象类型转换,53,例如有定义: int a; char ch; 表达式: a-ch*2+35L a-ch*2+ 35.,2.数据类型的强制转换,强制转换的一般形式 (类型名) 表达式 例如: (int)( b+3*x)%3 1/(float)a+6,54,注意: (fl

24、oat) 22/5 与 (float) (22/5) 不同 错误的类型转换: (int) b=a+5 b= int (3*a),3. 赋值表达式中的类型转换, = 小数部分自动补0,55, = 自动舍去实型表达式的小数部分(注意不进行四舍五入) = = 自动截取表达式值的低字节赋值,舍去高字节 = = 自动给高字节补0 或补1,重点,运算符的优先级和结合性 类型转换 +与 -(前缀与后缀不同) 条件表达式 位运算 sizeof,例题解析,1. 设x为int型变量,则执行以下语句后,x的值为_ x=10; x+=x-=x-x; A)10 B)20 C)40 D)30 2.以下合法的赋值语句是_

25、A) x=y=100 B) d-; C) x+y; D) c=int(a+b); 3.若已定义X和Y为double型,则表达式:X=1,Y=x+3/2的值是_ A) 1 B) 2 C) 2.0 D) 2.5.,4.在以下一组运算符中,优先级最高的运算符是_ A)=10 or A=10 | A=10 | A=10 & A=0,7.设x,y,z,t均为int型变量,则执行以下语句 x=y=z=1; t=+x|+y t的值为_ A) 不定值 B) 2 C) 1 D) 0 8.设a=1,b=2,c3,d4则表达式 a b?a:c d?a:d的结果为_ A) 4 B)3 C) 2 D) 1,9.假定w、

26、x、y、z、m均 为int型变量,有如下程序段: w=1; x=2; y=3; z=4; m=(wx)?w:x; m=(my)?m:y; m=(mz)?m:z; 则该程序运行后,m的值是 A) 4 B) 3 C) 3 D) 1,10. 设 int b=2; ,表达式(b1)的值是_ A) 0 B) 2 C) 4 D) 8 11.以下程序的输出结果是_。 main() int x=05; char z=a; printf(“%dn”,(x&1)&(zz); A)0 B)1 C)2 D)3,12.语句printf(“abrehiyboun”);的输出结果是_ A) abrehiybou B) ab

27、rehiybou C) rehiyou D) abrehiybou (说明:b是退格符) 13.以下程序的输出结果是 main() int a=5,b=4,c=6,d; printf(“%dn“, d=ab? ac?a:c:b); A) 5 B) 4 C) 6 D) 不确定,14. 已知i、j、k为int型变量,若从键盘输入:1,2,3,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是_。 A)scanf(“2d2d2 dtt,&i,j,&k); B)scanf(“d d d“,&i,j,k); C)scanf(“d,d,d”,i,j,k); D)scanf(“i=d,j=d,

28、k=d-t,&i,&j,&k);,15.若有以下程序段 int m=0xabc,n=0xabc; printf(“%X%xn”,m,n); 执行后输出结果是 A)0Xabc 0xabc B) 0xABC 0Xabc C) ABC abc D) abc abc,16. 设有以下程序段: int x=2002,y=2003; printf(“%dn”,(x,y); 则以下叙述正确的是_ A)输出语句格式说明符的个数少于输出项的个数,不能正确输出 B) 运行时产生错误信息 C) 输出值为2002 D) 输出值为2003,17.有以下定义语句 double a,b; int w; long c; 若各

29、变量已正确赋值,则下列选项中正确的表达 式是 A) a+=a+b=b+ B) w%(int)a+b) C) (c+w)%(int)a D) w=a&b,18.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|-10& x-y10 D) (x-y)*(x-y)100,19.有以下程序 main() char a,b,c,d; scanf(“%c,%c,%d,%d“, 若运行时从键盘上输入:6,5,65,66。则输出结果是_ A)6,5,A,B B)6,5,65,66 C)6,5,6,5 D)6,5,6,6,20.有以下程序段 int m=0,n=0; char c=a; scanf(

30、“%d%c%d“, 若从键盘上输入:10A10,则输出结果是_ A) 10,A,10 B) 10,a,10 C) 10,a,0 D) 10,A,0,填空题,1.以下程序的输出结果是_ 。 main() unsigned short a=65536; int b; printf(“%dn”,b=a); 2.若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b 中的值是_ c=(a-=(b-5); c=(a%11)+(b=3);,3. 表示“整数x的绝对值大于5”时值为“真”的C语言表达式是 _ 4. 设x为int型变量,与逻辑表达式!x等价的最简单的C语言关系表达式为_ 5

31、.设y为int型变量,请写出判断y为奇数的关系表达式_ 6. 若已知a=10,b=20,则表达式!ab的值为_,7.若想通过以下输入语句给a赋于1,给b赋于2,则输入数据的形式应该是_ int a,b; scanf(“a=%b,b=%d, ,9.若有语句 int i=-19,j; j=i%4; printf(“%dn”,j); 则输出结果是_ 10.有以下语句段 int n1=10,n2=20; printf(“ ”,n1,n2); 要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。 n1=10 n2=20,11.以下程序的输出结果是。 main() int a=0 a+=(a

32、=8); printf(“%dn“,a); 12.有以下程序: #include main() char c; while(c=getchar()!=?) putchar(-c); 程序运行时,如果从键盘输入:Y?N?,则输出结果为_,13. 有以下程序 #include main( ) char ch1,ch2; int n1,n2; ch1=getchar(); ch2=getchar(); n1=ch1-0; n2=n1*10+(ch2-0); printf(“%dn”,n2); 程序运行时输入:12;,执行后输出结果是_ 。,练习题,1已知字母A的ASC码为十进制的65,则下面程序的输

33、出是( ) main( ) char ch1,ch2; ch1=A+5-3; ch2=A+6-3; printf(”%d,%cn”,ch1,ch2); A67,D BB,C CC,D D不确定的值,2设int型占2字节,则unsigend int 所能表示的数据范围是 A065535 B-3276832767 C165536 D032767 3在C语言中,设 int 型占2字节,下列不正确的int型常数为 A32768 B0 C037 D0xaf,4在C语言中不同数据类型的长度是 A固定的 B由用户自己定义的 C任意的 D与机器字长有关的 5下列四组(八进制或十六进制数)常数中,正确的一组是

34、A016 0xfb 017 B0abc 017 0xa C010 x11 0x16 D0A12 7FF -123,6下列四组整型常量中,合法的一组是 A160 0xffff 011 B-0xcdf 01a 0xe C-01 986012 0668 D-0x48a 2e5 0x 7在C语言中,合法的字符常数是 A084 B x43 C84 D” 0”,8下列不正确的转义字符是 A B ” C074 D0 9下列四个叙述中,错误的是 A在C程序中,无论是整数还是实数,都能被准确的表示 B在C程序中,变量名代表存储器中的一个位置 C静态变量的生存期与整个程序的运行期相同 DC语言中的变量必须先说明后

35、引用,10当用#define X 23.6f定义后,下列叙述正确的是 AX是实型常数 BX是实型变量 CX是一串字符 DX是字符串常数 11当用const int A=9定义后,下列叙述正确的是 AA是整型常数 BA是整型变量 CA是字符型常数 DA是不定类型常数,12有以下定义: char a; int b; float c; double d; 则表达式a*b+d-c值的类型为 A) float B) int C) char D) double 13下列变量定义中合法的是: A) short _a=1-.le-1; B) double b=1+5e2.5; C) long do=0xfda

36、L; D) float 2_and=1-e-3;,14若已定义int a,b;,则语句: printf(“%d “,(a=2) 的输出结果是: A无输出 B结果不确定 C-1 D1 15当c的值不为0时,下列选项中能正确将C的值赋给变量a和b的是: A)c=b=a B)(a=c)|(b=c) C)(a=c)&(b=c) D)a=c=b,16设有如下变量定义: int i=8,k,a,b; unsigned long w=5; double x=1.42,y=5.2; 则以下符合C语言语法的表达式是 Aa+=a-=(b=4)*(a=3) Bx%(-3) Ca=a*3=2 Dy=float(i),

37、17设已定义int k=7,x=12;,则能使值为3的表达式是: Ax%=(k%=5) Bx%=(k-k%5) Cx%= k-k%5 D(x%=k)-(k%=5),18.以下程序 main() int a=12,b=12; printf(“%d %dn“,-a,+b); 的输出结果是: A10 10 B12 12 C11 10 D11 13,19有如下程序 main() int y=3,x=3,z=1; printf(“%d %dn“,(+x,a,y+),z+2); 的输出结果是: A) 34 B) 42 C) 43 D) 33,20设x和y均为int型变量,且x=10和y=3,则以下语句 p

38、rintf(“%d,%dn“,x +, -y); 的输出结果是: A10,3 B9,3 C9,2 D10,2 21下列可作为C语言赋值语句的是 A)x=3,y=5 B)a=b=6 C)i-; D)y=int(x);,22以下程序 main() int a=3; printf(“%dn“,(a+=a-=a*a)); 的输出结果是: A-6 B12 C0 D-12,23.设x和y均为int型变量,语句组: x+=y; y=x-y; x-=y; 的功能是 A)把x和y按从大到 小排列 B)把x和y按从小到大排列 C)无确定结果 D)交换x和y中的值. 24.表示关系x=y=z的c语言表达式为 A)

39、(X=Y)&(Y=Z) B) (X=Y)AND(Y=Z) C) (X=Y=Z) D) (X=Y)&(Y=Z),25.设a、b、C、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=ab) 输出结果是 A) 2,1 B) 3,2 C) 4,3 D) 2,-1,27.以下程序的输出结果是 main( ) int a=-1,b=4,k; k=(+ +a0) A)1 0 4 B)1 0 3 C)0 0 3 D)0 0 4 28.如果int A=1,B=2,C=3,D=4;则条件表达式AB?A:CD?C:D 的值是_。 A) 4 B) 3 C) 2 D) 1

40、,29.设有如下定义:int x=l,y=-1;,则语句:printf(“%Dn”,(x-&+y); 的输出结果是 A)1 B)0 C)-1 D)2 30. 设int i=2,j=1,k=3,则表达式i&(i+j)&k|i+j的值是_ A)0 B)2 C)1 D)3,填空题,1.设有说明: char w;int x; floar y; double z; 则表达式w*x+z-y 值的数据类型为 _ 2. 设有int x=11;则表达式(x+*1/3)的值为_ 3.下列程序的输出结果是_ main() double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; pr

41、intf(“%f n“, d*y); ,4. 设已定义int x=1,y=1,则表达式(!x|y-)的值是_ 5.下列程序的输出结果是16.00,请填空。 main() int A=9, B=2; float x=_, y=1.1,z; z=A/2+B*x/y+1/2; printf(“%5.2fn“, z ); ,重点回顾,1C的数据类型(基本类型,构造类型,指针类型,空类型)及其定义方法。 2C运算符的种类、运算优先级和结合性。 3不同类型数据间的转换与运算。 4C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。 5表达式语句,空语句,复合语句。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1