第2章数据类型和表达式答案

上传人:鲁** 文档编号:571087320 上传时间:2024-08-08 格式:PPT 页数:96 大小:1.27MB
返回 下载 相关 举报
第2章数据类型和表达式答案_第1页
第1页 / 共96页
第2章数据类型和表达式答案_第2页
第2页 / 共96页
第2章数据类型和表达式答案_第3页
第3页 / 共96页
第2章数据类型和表达式答案_第4页
第4页 / 共96页
第2章数据类型和表达式答案_第5页
第5页 / 共96页
点击查看更多>>
资源描述

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

1、主讲教师:贾澎涛主讲教师:贾澎涛C/C+C/C+语言程序设计语言程序设计第二章第二章数据类型和表达式数据类型和表达式本章主要内容本章主要内容l本章介本章介绍C语言的基言的基础,包括:,包括:数据类型数据类型运算符和表达式运算符和表达式l均是程序均是程序设计的基本知的基本知识l为什么什么讨论这些知些知识?2通常通常程序程序要对数据进行操作处理:要对数据进行操作处理:处理的对象是处理的对象是数据数据通过通过运算符和表达式运算符和表达式进行操作进行操作第第2章章数据类型和表达式数据类型和表达式l2.1词法构成法构成l字符集字符集l标识符符l关关键字字l注注释符符3重点重点lANSIC标准准规定的定的

2、C语言关言关键字共字共32个,个,所有所有C关关键字都必字都必须小写小写l标识符由符由132个字符个字符组成,第一个字符成,第一个字符必必须是字母或下画是字母或下画线,标识符不能与符不能与C关关键字相同,并区分大小写。字相同,并区分大小写。lC语句以分号句以分号结尾,分号是尾,分号是C语句的句的组成成部分。部分。C语句包括句包括简单语句句(即表达式即表达式语句句)、复合复合语句和空句和空语句。句。4例题解析例题解析1.下列四个叙述中,正确的是下列四个叙述中,正确的是。A)C程序中的所有字母都必程序中的所有字母都必须小写小写B)C程序中的关程序中的关键字必字必须小写,其他小写,其他标识符不区分大

3、小写符不区分大小写C)C程序中的所有字母都不区分大小写程序中的所有字母都不区分大小写D)C语言中的所有关言中的所有关键字必字必须小写小写2.下面属于下面属于C语言保留字的是言保留字的是_。A)IntB)typedefC)ENUMD)unien5你能回答下面你能回答下面问题吗?问题吗?3.以下叙述正确的是以下叙述正确的是_A)可以把可以把define和和if定定义为用用户标识符符B)可以把可以把define定定义为用用户标识符,但不能把符,但不能把if定定义为用用户标识符符C)可以把可以把if定定义为用用户标识符,但不能把出符,但不能把出define定定义为用用户标识符符D)define和和if

4、都不能定都不能定义为用用户标识符符4.以下以下选项中合法的用中合法的用户标识符是符是。A)longB)_2TestC)3DmaxD)A.dat65.下列下列标识符中正确的一符中正确的一组是是_A)name,char,_abc,A$B)abc.c,5bytes,_USA,_54321C)print,const,type,defineD)include,integer,Double,short_int6.下面的下面的单词中属于中属于C语言保留字的是言保留字的是_A)LongB)breakC)ForD)struction7数据类型数据类型基本类型基本类型构造类型构造类型指针类型指针类型( )空类型空

5、类型(void)字符型字符型(char)数值类型数值类型枚举类型枚举类型(enum)数组类型数组类型()结构体类型结构体类型(struct)共用体类型共用体类型(union)整型整型(short,int,long,unsigbed)实型实型单精度型单精度型(float)双精度型双精度型(double)2.2数据类型数据类型8重点重点lC语言提供了五种基本数据言提供了五种基本数据类型,即型,即char,int,float,double和和void。l数据数据类型决定了内存的分配模式,即不同的数据型决定了内存的分配模式,即不同的数据类型所型所占的内存字占的内存字节数是不同的。内存分配模式不是数是不

6、同的。内存分配模式不是C语言本言本身的身的规定,而是由宿主机硬件决定的。定,而是由宿主机硬件决定的。l不同的数据不同的数据类型允型允许的数的数值范范围也是不同的,超出了允也是不同的,超出了允许的数的数值范范围,就会得到,就会得到错误的的结果。果。C编译系系统不具不具检查此此类错误的能力。的能力。lC语言言对整型和字符型不区分,可以混合使用。整型和字符型不区分,可以混合使用。9例题解析例题解析1.C语言中允言中允许的基本数据的基本数据类型包括型包括。A)整型、整型、实型、型、逻辑型型B)整型、整型、实型、字符型型、字符型C)整型、字符型、整型、字符型、逻辑型型D)整型、整型、实型、型、逻辑型、字

7、符型型、字符型2.C语言中能用八言中能用八进制数表示的数据制数表示的数据类型型为A)字符型、整型字符型、整型B)整型、整型、实型型C)字符型、字符型、实型、双精度型型、双精度型D)字符型、整型、字符型、整型、实型、双精度型型、双精度型10你能回答下面你能回答下面问题吗?问题吗?2.3常量与变量常量与变量2.3.1常量常量常量常量 程序运行程序运行过程中不能被改程中不能被改变的量。的量。l整数在整数在计算机中是准确表示的,可以用十算机中是准确表示的,可以用十进制、制、八八进制和十六制和十六进制数表示。当用八制数表示。当用八进制数表示制数表示时,第一位数字前面必,第一位数字前面必须加加0;当用十六

8、;当用十六进制制数表示数表示时,第一位数字前而必,第一位数字前而必须加加0x:无符号:无符号整数的末尾必整数的末尾必须加字母加字母u或或U;长整数的末尾必整数的末尾必颁加字母加字母I或或L。l字符型常数是用字符型常数是用单引号括住的引号括住的单个字符。用个字符。用转义字符表示不可字符表示不可显示字符。示字符。转义字符以字符以“”开开头,后跟一个特定的字母或八,后跟一个特定的字母或八进制数或十六制数或十六进制数表示的制数表示的ASCII代代码值。11l用八用八进制制时,前面可以也可以不加数字,前面可以也可以不加数字0;用十六;用十六进制数制数时,前面必,前面必须加字母加字母x。l字符串常数是用双

9、引号括住的一串字符。当两个双引号字符串常数是用双引号括住的一串字符。当两个双引号连写写时表示零字符串。表示零字符串。lC语言将所有的言将所有的实数都数都视为双精度型数。双精度数只能双精度型数。双精度数只能用十用十进制数表示。在制数表示。在计算机中是近似表示的。双精度数算机中是近似表示的。双精度数用定点数形式表示用定点数形式表示时,小数点不可缺少;用浮点数形式,小数点不可缺少;用浮点数形式表示表示时,E前面必前面必须有数字有数字(带不不带小数点均可小数点均可),E后面后面只能是整数,不能只能是整数,不能带小数点。小数点。12l符号常数是用符号常数是用标识符表示的常数,它具有符表示的常数,它具有变

10、量的外表和常量的内涵。量的外表和常量的内涵。l用用#define定定义的符号常数没有的符号常数没有类型和型和值的含的含义。在。在预编译时由由编译系系统将宏名用将宏名用宏体替宏体替换。define是是编译预处理命令,理命令,不属于不属于C语言关言关键字。字。l用用const定定义的符号常数既有的符号常数既有值又有又有类型型的含的含义。该定定义是在是在编译阶段完成的。段完成的。13例题解析例题解析1.下列属于下列属于C语言合法的字符常量是言合法的字符常量是_A)97B)“A“C)tD)”0”14你能回答下面你能回答下面问题吗?问题吗?2.3.2 变量变量 1.1.变变量的有关概念量的有关概念量的有

11、关概念量的有关概念l l在程序运行在程序运行在程序运行在程序运行过过程中,其程中,其程中,其程中,其值值改改改改变变的数据,称的数据,称的数据,称的数据,称为变为变量,量,量,量,变变量用量用量用量用标识标识符表示,称符表示,称符表示,称符表示,称为为变变量名量名量名量名。l l变变量必量必量必量必须须“ “先定先定先定先定义义后使用后使用后使用后使用” ”l l系系系系统为变统为变量分配存量分配存量分配存量分配存储单储单元,存元,存元,存元,存储变储变量的量的量的量的值值。 l l编编写程序写程序写程序写程序时时通通通通过变过变量名来存、取量名来存、取量名来存、取量名来存、取变变量量量量值值

12、。15a a510510变量值变量值变量值变量值为变量分配的为变量分配的为变量分配的为变量分配的存储单元存储单元存储单元存储单元变量名变量名变量名变量名例如:例如:例如:例如:有有有有变量变量变量变量a a a a它的值是它的值是它的值是它的值是5 5 5 5101010102. 变量定义变量定义变量定量定义的一般格式:的一般格式:【类型修型修饰符符】数据数据类型型说明符明符变量列量列表;表;例如:例如:int i, j; long k, m; float x,y; char ch1,ch2;16必须使用合法的标识符作变量名必须使用合法的标识符作变量名不能使用关键字为变量命名不能使用关键字为变

13、量命名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 m=n=23.16; 17例题解析例题解析1.若有以下定若有以下定义和和语句:句:intu=010,v=0x10,w=10;printf(“%d,%d,%dn”,u,v,w);则输出出结果是:果是:A)8,16,10B)10,10,10C)8,8,10D)

14、8,10,1018你能回答下面你能回答下面问题吗?问题吗?2.4指针和指针变量指针和指针变量 main() main() main() main()float x;float x;float x;float x; int y; int y; int y; int y; 192.4.1指针和指针变量的概念指针和指针变量的概念变量的两个物理意义变量的两个物理意义200020002001200120022002200320032004200420052005x xy y变量的内容变量的内容变量的地址变量的地址192.4.1指针和指针变量的概念指针和指针变量的概念 main() main() main

15、() main()int a,b,c;int a,b,c;int a,b,c;int a,b,c; a=5; a=5; a=5; a=5; b=3; b=3; b=3; b=3; c=a c=a c=a c=a +b;+b;+b;+b; 20200020002001200120022002200320032004200420052005a ab bc c5 5直接将整数直接将整数直接将整数直接将整数 5 5 5 5 存入变量存入变量存入变量存入变量 a a a a 3 3直接将整数直接将整数直接将整数直接将整数 3 3 3 3 存入变量存入变量存入变量存入变量 b b b b8 直接直接直接直

16、接将变量将变量将变量将变量 a a a a、b b b b 的值取出,相的值取出,相的值取出,相的值取出,相加后存入变量加后存入变量加后存入变量加后存入变量 c c c c 利用变量名利用变量名存取数据的方式存取数据的方式称为称为“直接存取直接存取”方式。方式。20C语语言还提供言还提供了对内存了对内存单元的单元的“间接存取间接存取”方式方式21p p2000200020012001200220022003200320042004200520052006200620072007a ab bc c532004a a和和b b相加的结果相加的结果( (* *p p= =a a+ +b b) )存放

17、存放到变量到变量p p所指向的所指向的内存单元内存单元中去。中去。此时此时c c称为指针变量称为指针变量p p的的目标变量目标变量。P P20042004c cp=&c8 main()main()int a=5,b=3,c,*p;int a=5,b=3,c,*p; p = &c;p = &c; *p = a + b; *p = a + b; 变量的地址称为变量的指针变量的地址称为变量的指针存放地址的变量称为指针变量存放地址的变量称为指针变量212.4.2指针变量的定义指针变量的定义main()inta,*p=&a;floatx,*q=&x;222000200020002000200120012

18、001200120022002200220022003200320032003200420042004200420052005200520052006200620062006200720072007200720082008200820082009200920092009a ap px xq q20042000 main()main()int a,*p;int a,*p; float x,*q; float x,*q; p = &a;p = &a; q = &x; q = &x; 指针变量定义的形式指针变量定义的形式指针变量定义的形式指针变量定义的形式指针变量初始化指针变量初始化指针变量初始化指

19、针变量初始化222.5 运算符和表达式运算符和表达式l主要内容:主要内容:算术运算符和算术表达式算术运算符和算术表达式赋值运算符和赋值表达式赋值运算符和赋值表达式关系运算符和关系表达式关系运算符和关系表达式逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式位运算符和位运算表达式位运算符和位运算表达式条件运算符和条件表达式条件运算符和条件表达式逗号运算符和逗号表达式逗号运算符和逗号表达式其他运算符及其运算其他运算符及其运算23运算符的有关概念运算符的有关概念l作用:作用:对运算对象完成规定的操作运算对运算对象完成规定的操作运算l类型:型:按运算对象分:按运算对象分:l单目、双目、三目单目、双目、三目按

20、功能分:按功能分:l算术、赋值、关系、逻辑算术、赋值、关系、逻辑l条件、逗号、位、其他条件、逗号、位、其他24运算符的优先级和结合性运算符的优先级和结合性l优先先级指各种运算符号的运算优先顺序指各种运算符号的运算优先顺序例如:例如:算术运算优先于关系运算算术运算优先于关系运算 算术运算中先算术运算中先 * / * / 后后 + - + -25l结合性结合性指运算符号和运算对象的结合方向指运算符号和运算对象的结合方向分为:从左向右分为:从左向右(左结合左结合)和从右向左和从右向左(右结合右结合)例如:例如:算术运算符为算术运算符为左结合左结合a-b+4赋值运算符为赋值运算符为右结合右结合a=b=

21、5()本章涉及的运算符本章涉及的运算符+ - * / % + - * / % + - + -+ - + -= += -= *= /= %= += -= *= /= %=&= |= = = = = = = = != & | & | ! !& | & | ?:?:, ,& & sizeof sizeof ( (数据数据类型型标识符符) )26类型类型类型类型种类种类种类种类算术运算符算术运算符算术运算符算术运算符赋值运算符赋值运算符赋值运算符赋值运算符关系运算符关系运算符关系运算符关系运算符逻辑运算符逻辑运算符逻辑运算符逻辑运算符位运算符位运算符位运算符位运算符条件运算符条件运算符条件运算符条件运

22、算符逗号运算符逗号运算符逗号运算符逗号运算符其他运算符其他运算符其他运算符其他运算符表达式的有关概念表达式的有关概念l什么是表达式什么是表达式由由运算符运算符将运算对象连接成的式子,它将运算对象连接成的式子,它描述了一个具体的求值运算过程。描述了一个具体的求值运算过程。l计算表达式的算表达式的值按照运算符的运算规则求值按照运算符的运算规则求值求值时注意运算符的优先级和结合性求值时注意运算符的优先级和结合性l表达式表达式值的的类型型自动转换自动转换强制转换强制转换 27例如:例如:l l表达式:表达式:150+b*212.456b=(+a)-2a/=a*=(a=2)f=abc-a|+b&c+ma

23、x=ab?a:ba=3,a+=3,a*a1/(float)a+628算术运算算术运算l算算术运算符的运算符的优先先级29( ) + - + - * / % + - 同级 同级 同级 单目单目 双目双目 高高高高 低低低低l没有乘方运算符没有乘方运算符,要,要计算算a3要写作要写作a*a*a的的连乘,或用乘,或用标准准库函数函数pow(a,3)l“/”的运算的运算对象可象可为各种各种类型数据,但是型数据,但是当当进行两个整型数据相除行两个整型数据相除时,运算,运算结果也果也是整型数据是整型数据l“%”要求运算要求运算对象必象必须是整型数据,功是整型数据,功能是求两数相除的余数,余数的符号与被能是

24、求两数相除的余数,余数的符号与被除数的符号相同。除数的符号相同。自增自减运算自增自减运算l+ + -是是单目运算符目运算符l有前有前缀和后和后缀两种形式两种形式 前缀形式前缀形式: : 先自增先自增( (自减自减) )再引用;再引用;后缀形式后缀形式: : 先引用再自增先引用再自增( (自减自减) );l功能:功能: 前前缀形式形式 + + a a 等价于等价于 a = a + 1a = a + 1 - a a 等价于等价于 a = a a = a 1 1 后后缀形式形式 a +a + 等价于等价于 a = a + 1a = a + 1 a a - 等价于等价于 a = a a = a 1 1

25、31例如:例如:当当 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说明:说明:l+和和-的运算的运算对象只能是象只能是变量(或运算量(或运算结果是果是变量的表量的表达式)达式),不能是常量(或运算不能是常量(或运算结果是数果是数值的表达式)。的表达式)。例如:例如:5+、(a+2)+不合法。不合法。l具有右具有右结合性,合性,结合方向合方向

26、为从右到左。从右到左。例如:例如:a+等价于等价于-(a+)l如果有多个运算符如果有多个运算符连续出出现时,C系系统尽可能多的从左到右尽可能多的从左到右将字符将字符组合成一个运算符合成一个运算符例如:例如:i+j等价于等价于(i+)+j-i+-j等价于等价于-(i+)+(-j)33赋值运算赋值运算l赋值运算符运算符( (右右结合)合) =+=- -=*=/=%=&=|=l赋值表达式表达式将将表达式的值表达式的值存入存入变量变量对应的内存单元中对应的内存单元中m=12b=(+a)-2m%=3+n等价于等价于m=m%(3+n)x*=(x=5)34说明:说明:l赋值号左号左边必必须是是变量,右量,右

27、边可以是可以是C语言言任意合法的表达式任意合法的表达式例如:例如:n=t+210等价于:等价于:a=(b=(b*c)10)l赋值号与数学中的等号含号与数学中的等号含义不同不同例如:例如:数学中数学中a=b等价于等价于b=aC语言中语言中a=b不等价于不等价于b=a35关系运算关系运算l关系运算符关系运算符( (左左结合)合) =!=较高较高较低较低l关系表达式关系表达式用关系运算符将运算对象连接成的式子用关系运算符将运算对象连接成的式子例如:例如:12=c等价于等价于a=(b=c)与与(a=b)=c不等价不等价l关系运算符关系运算符优先于先于赋值,低于算,低于算术36说明:说明:l关系运算的关

28、系运算的结果果应该是是逻辑值。C语言用言用数数值用用1表示表示逻辑真真,0表示表示逻辑假假例如:例如:75的值是的值是1,57的值是的值是0ab的值是的值是0,a=zl逻辑运算符的运算符的优先先级和和结合性:合性:!是单目运算符,是单目运算符,右结合右结合,高于算术,高于算术&和和|是双目运算符,是双目运算符,左结合左结合,高于,高于赋值运算符,低于关系运算符赋值运算符,低于关系运算符39逻辑运算规则逻辑运算规则l从左到右依次从左到右依次进行行逻辑计算算运算对象为运算对象为非非0 0表示表示逻辑真逻辑真运算对象为运算对象为 0 0 表示表示逻辑假逻辑假l逻辑运算的运算的结果果为 0 0 或或

29、1 1例如设:例如设:a=15,b=0,c=-2a&b&c结果为结果为0a|b|c结果为结果为1(a+c)|b&c结果为结果为140逻辑运算规则(续)逻辑运算规则(续)l运算按照运算按照从左至右从左至右的的顺序序进行,一旦能行,一旦能够确定确定逻辑表达式的表达式的值,就立即,就立即结束运算束运算逻辑运算的短路性质逻辑运算的短路性质例如例如设:设:a=1,b=0,c=-2a&b&c41(a+)|+b&-c为为为为00,运算终止,表达式,运算终止,表达式,运算终止,表达式,运算终止,表达式值值值值为为为为00为非为非为非为非0 0,运算终止,表达式值为,运算终止,表达式值为,运算终止,表达式值为,

30、运算终止,表达式值为11且且且且a a为为为为2 2,b b为为为为0 0,c c为为为为-2-2( (b,cb,c保持原值保持原值保持原值保持原值) )关系与逻辑运算符的应用关系与逻辑运算符的应用l表示数学公式表示数学公式abcl判断判断a,b,c三条三条线段能否段能否组成一个三角形成一个三角形la,b不同不同时为负42a+bc&a+cb&b+caa=0|b=0!(a0&b0)( (a=0)|(a=0&b=0&b=0)a=0)|(a=0&b=0&b=0)ab&bc条件表达式运算条件表达式运算l条件运算符:条件运算符:?:l条件表达式的一般形式条件表达式的一般形式 表达式表达式1 ? 表达式表

31、达式2 : 表达式表达式3例如:例如:m=10&b-20?a:bx=3+a5?100:20043lC语言中唯一的语言中唯一的三目运算符三目运算符,要正确区分用,要正确区分用?和和:分隔的表达式分隔的表达式l涉及条件运算符的优先级与结合性涉及条件运算符的优先级与结合性条件运算符优先级条件运算符优先级l条件运算符条件运算符优先先级高于高于赋值、逗号运算符,、逗号运算符,低于其他运算符低于其他运算符例如:例如:m=10&b-20?a:bx=3+a5?100:20044等价于:等价于:(m=10&b-20)?a:b等价于:等价于:x=(3+a5)?100:200)条件运算符的结合性条件运算符的结合性l

32、条件运算符具有条件运算符具有右右结合性合性l当一个表达式中出当一个表达式中出现多个条件运算符多个条件运算符时,应该将位于最右将位于最右边的的问号与离它最近的冒号与离它最近的冒号号配配对,并按,并按这一原一原则正确区分各条件运正确区分各条件运算符的运算算符的运算对象。象。 45例如:例如:wx?x+w:xy?x:y与与wx?x+w:(xy?x:y)等价等价与与(wx?x+w:xy)?x:y不等价不等价逗号表达式运算逗号表达式运算l逗号表达式的一般形式逗号表达式的一般形式表达式表达式1,表达式,表达式2,表达式,表达式nl逗号表达式的逗号表达式的值从左向右,依次对表达式求值,最后得到从左向右,依次

33、对表达式求值,最后得到表表达式达式n的值就是逗号表达式的值的值就是逗号表达式的值46例如:例如:例如:例如:a=5,a+,a*3表达式值为表达式值为表达式值为表达式值为1818,且,且,且,且a=6a=6t=1,t+5,t+表达式值为表达式值为表达式值为表达式值为11,且,且,且,且t=2t=2x=(a=3*5,a*4)赋值表达式赋值表达式赋值表达式赋值表达式的值为的值为的值为的值为6060,且,且,且,且x=60,a=15x=60,a=15位运算符位运算符&|47位逻辑运算符位逻辑运算符移位运算符移位运算符单目单目单目单目l位运算符的运算对象只能是位运算符的运算对象只能是整型数据整型数据或或

34、字符型数据字符型数据,不,不能是实型数据能是实型数据l运算对象一律按二进制补码参加运算,并运算对象一律按二进制补码参加运算,并按位进行运算按位进行运算l位运算的结果是一个整型数据位运算的结果是一个整型数据低于单目、算术运算符,高于其低于单目、算术运算符,高于其他运算符他运算符低于单目、算术和关系运算符,高低于单目、算术和关系运算符,高于其他运算符于其他运算符位逻辑运算符的运算规则位逻辑运算符的运算规则 l l假假设ai和和bi均是一个二均是一个二进制位(制位(bit)48运算对象运算对象运算对象运算对象逻辑运算结果逻辑运算结果逻辑运算结果逻辑运算结果a ai ib bi ia ai i&b&b

35、i ia ai i|b|bi ia ai i bbi iaai i0 00 00 00 00 01 10 01 10 01 11 11 11 10 00 01 11 10 01 11 11 11 10 00 0例如:例如:例如:例如:假设假设假设假设a=10a=10,b=010b=010求求求求a&ba&b、a|ba|b、abab、aa程序如下:程序如下:main()inta=10,b=010;printf(%d%dn,a&b,a|b);printf(%d%dn,ab,a);49输出结果:输出结果:8108102-112-1100000000000010100000000000001010&0

36、000000000001000&000000000000100000000000000010000000000000001000即:即:即:即:a&ba&b的值是的值是的值是的值是8 80000000000001010000000000000101011111111111101011111111111110101即:即:即:即: a a的值是的值是的值是的值是- - - -1111移位运算移位运算l l例如:例如:ab-1等价于等价于(a+8)(b-1)50例如:例如:假设假设a=10,b=2,求求ab-1main()inta=10,b=2;printf(%d%dn,abab-1a+8b-1)

37、;输出结果:输出结果:409409请自行分析请自行分析请自行分析请自行分析运行结果运行结果运行结果运行结果取地址运算符取地址运算符&为单目运算符为单目运算符运算对象只能是变量运算对象只能是变量运算结果是变量的存储地址运算结果是变量的存储地址例如有定例如有定义:inta,student;charch;可以可以对变量量a、ch、student进行行&运算:运算:&a&ch&student51长度运算符长度运算符sizeof为单目运算符为单目运算符运算对象只能是运算对象只能是变量名变量名或或数据类型标识符数据类型标识符运算结果为该变量或该数据类型的长度运算结果为该变量或该数据类型的长度52main(

38、)inta=5;doublex;printf(%d%d,sizeof(intint),sizeof(a a);printf(%d%d,sizeof(doubledouble),sizeof(x x);printf(%d%dn,sizeof(floatfloat),sizeof(charchar);输出结果:输出结果:22228888 4 4 1 1运算中数据类型的转换运算中数据类型的转换1.数据数据类型的自型的自动转换l转换原原则:自自动将精度低、表示范将精度低、表示范围小的运算小的运算对象象类型型向精度高、表示范向精度高、表示范围大的运算大的运算对象象类型型转换l53char,shortch

39、ar,shortdoubledoublelonglongfloatfloatunsignedunsignedintint高精度高精度高精度高精度低精度低精度低精度低精度例如有定义:例如有定义:inta;charch;表达式:表达式:a-ch*2+35La-ch*2+35.2.数据类型的强制转换数据类型的强制转换 l强制制转换的一般形式的一般形式(类型名类型名)表达式表达式例如:例如:(int)(b+3*x)%31/(float)a+654l注意:注意:(float)22/5与与(float)(22/5)不同不同l错误的类型转换:错误的类型转换:(int)b=a+5b=int(3*a)3. 赋值

40、表达式中的类型转换赋值表达式中的类型转换 l=小数部分自动补小数部分自动补055l=自动舍去实型表达式的小数部分(自动舍去实型表达式的小数部分(注意不进行四舍五入注意不进行四舍五入)l=l=自动截取表达式值的低字节赋值,舍去高字节自动截取表达式值的低字节赋值,舍去高字节l=l=自动给高字节补自动给高字节补0或补或补1重点重点l运算符的运算符的优先先级和和结合性合性l类型型转换l+与与-(前(前缀与后与后缀不同)不同)l条件表达式条件表达式l位运算位运算lsizeof例题解析例题解析1.设x为int型型变量,量,则执行以下行以下语句后,句后,x的的值为_B_x=10;x+=x-=x-x;A)10

41、B)20C)40D)302.以下合法的以下合法的赋值语句是句是_B_A)x=y=100B)d-;C)x+y;D)c=int(a+b);3.若已定若已定义X和和Y为double型,型,则表达式:表达式:X=1,Y=x+3/2的的值是是_C_A)1B)2C)2.0D)2.5.4.在以下一在以下一组运算符中,运算符中,优先先级最高的运算最高的运算符是符是_C_A)=10orA=10|A=10|A=10&A=07.设x,y,z,t均均为int型型变量,量,则执行以下行以下语句句x=y=z=1;t=+x|+y&+z;t的的值为_C_A)不定不定值B)2C)1D)08.设a=1,b=2,c3,d4则表达式

42、表达式ab?a:cd?a:d的的结果果为_D_A)4B)3C)2D)19.假定假定w、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的的值是是DA)4B)3C)3D)110.设intb=2;,表达式表达式(b1)的的值是是_D_A)0B)2C)4D)811.以下程序的以下程序的输出出结果是果是_B_。main()intx=05;charz=a;printf(“%dn”,(x&1)&(zb?ac?a:c:b);A)5B)4C)6D)不确定不确定14

43、.已知已知i、j、k为int型型变量,若从量,若从键盘输入:入:1,2,3,使,使i的的值为1、j的的值为2、k的的值为3,以下,以下选项中正确的中正确的输入入语句是句是_C_。A)scanf(2d2d2dtt,&i,j,&k);B)scanf(ddd,&i,j,k);C)scanf(d,d,d”,i,j,k);D)scanf(i=d,j=d,k=d-t,&i,&j,&k);15.若有以下程序段若有以下程序段intm=0xabc,n=0xabc;printf(“%X%xn”,m,n);执行后行后输出出结果是果是CA)0Xabc0xabcB)0xABC0XabcC)ABCabcD)abcabc1

44、6.设有以下程序段:有以下程序段:intx=2002,y=2003;printf(“%dn”,(x,y);则以下叙述正确的是以下叙述正确的是_D_A)输出出语句格式句格式说明符的个数少于明符的个数少于输出出项的的个数,不能正确个数,不能正确输出出B)运行运行时产生生错误信息信息C)输出出值为2002D)输出出值为200317.有以下定有以下定义语句句doublea,b;intw;longc;若各若各变量已正确量已正确赋值,则下列下列选项中正确中正确的表达的表达式是式是CA)a+=a+b=b+B)w%(int)a+b)C)(c+w)%(int)aD)w=a&b18.若若x和和y代表整型数,以下表

45、达式中不能代表整型数,以下表达式中不能正确表示数学关系正确表示数学关系|x-y|10的是的是_C_A)abs(x-y)-10&x-y10C)!(x-y)10D)(x-y)*(x-y)10019.有以下程序有以下程序main()chara,b,c,d;scanf(%c,%c,%d,%d,&a,&b,&c,&d);printf(“%c,%c,%c,%c,a,b,c,d);若运行若运行时从从键盘上上输入:入:6,5,65,66。则输出出结果是果是_A_A)6,5,A,BB)6,5,65,66C)6,5,6,5D)6,5,6,620.有以下程序段有以下程序段intm=0,n=0;charc=a;sca

46、nf(%d%c%d“,&m,&c,&n);printf(%d,%c,%dn,m,c,n);若从若从键盘上上输入:入:10A10,则输出出结果是果是_A_A)10,A,10B)10,a,10C)10,a,0D)10,A,0填空题填空题1.以下程序的以下程序的输出出结果是果是_0_。main()unsignedshorta=65536;intb;printf(“%dn”,b=a);2.若有定若有定义:inta=10,b=9,c=8;接着接着顺序序执行下列行下列语句后,句后,变量量b中的中的值是是_3_c=(a-=(b-5);c=(a%11)+(b=3);3.表示表示“整数整数x的的绝对值大于大于5

47、”时值为“真真”的的C语言表达式是言表达式是abs(x)5x5|xb的的值为_0_7.若想通若想通过以下以下输入入语句句给a赋于于1,给b赋于于2,则输入数据的形式入数据的形式应该是是a=1,b=2inta,b;scanf(“a=%b,b=%d,&a,&b);8.以下程序的以下程序的输出出结果是果是_0_main()inta=5,b=5,c=3,d;d=(abc);printf(“%dn”,d);9.若有若有语句句inti=-19,j;j=i%4;printf(“%dn”,j);则输出出结果是果是_-3_10.有以下有以下语句段句段intn1=10,n2=20;printf(“n1=%dnn2

48、=%d”,n1,n2);要求按以下格式要求按以下格式输出出n1和和n2的的值,每个,每个输出行出行从第一列开始,从第一列开始,请填空。填空。n1=10n2=2011.以下程序的以下程序的输出出结果是果是:16main()inta=0a+=(a=8);printf(%dn,a);12.有以下程序:有以下程序:#includemain()charc;while(c=getchar()!=?)putchar(-c);程序运行程序运行时,如果从,如果从键盘输入:入:Y?N?,则输出出结果果为_X_13.有以下程序有以下程序#includemain()charch1,ch2;intn1,n2;ch1=g

49、etchar();ch2=getchar();n1=ch1-0;n2=n1*10+(ch2-0);printf(“%dn”,n2);程序运行程序运行时输入:入:12;,执行后行后输出出结果是果是12。练习题练习题1已知字母已知字母A的的ASC码为十十进制的制的65,则下面下面程序的程序的输出是(出是(A)main() charch1,ch2; ch1=A+5-3; ch2=A+6-3; printf(”%d,%cn”,ch1,ch2);A67,DBB,CCC,DD不确定的不确定的值2设int型占型占2字字节,则unsignedint所能表示的所能表示的数据范数据范围是是AA065535B-32

50、76832767C165536D0327673在在C语言中,言中,设int型占型占2字字节,下列不正确的,下列不正确的int型常数型常数为AA32768B0C037D0xaf4在在C语言中不同数据言中不同数据类型的型的长度是度是DA固定的固定的B由用由用户自己定自己定义的的C任意的任意的D与机器字与机器字长有关的有关的5下列四下列四组(八(八进制或十六制或十六进制数)常数中,正确制数)常数中,正确的一的一组是是AA0160xfb017B0abc0170xaC010x110x16D0A127FF-1236下列四下列四组整型常量中,合法的一整型常量中,合法的一组是是AA1600xffff011B-

51、0xcdf01a0xeC-019860120668D-0x48a2e50x7在在C语言中,合法的字符常数是言中,合法的字符常数是BA084Bx43C84D”0”8下列不正确的下列不正确的转义字符是字符是CAB”C074D09下列四个叙述中,下列四个叙述中,错误的是的是AA在在C程序中,无程序中,无论是整数是整数还是是实数,都能被准数,都能被准确的表示确的表示B在在C程序中,程序中,变量名代表存量名代表存储器中的一个位置器中的一个位置C静静态变量的生存期与整个程序的运行期相同量的生存期与整个程序的运行期相同DC语言中的言中的变量必量必须先先说明后引用明后引用10当用当用#defineX23.6f

52、定定义后,下列叙述后,下列叙述正确的是正确的是CAX是是实型常数型常数BX是是实型型变量量CX是一串字符是一串字符DX是字符串常数是字符串常数11当用当用constintA=9定定义后,下列叙述后,下列叙述正确的是正确的是AAA是整型常数是整型常数BA是整是整型型变量量CA是字符型常数是字符型常数DA是不是不定定类型常数型常数12有以下定有以下定义:chara;intb;floatc;doubled;则表达式表达式a*b+d-c值的的类型型为DA)floatB)intC)charD)double13下列下列变量定量定义中合法的是:中合法的是:AA)short_a=1-.le-1;B)doubl

53、eb=1+5e2.5;C)longdo=0xfdaL;D)float2_and=1-e-3;14若已定若已定义inta,b;,;,则语句:句:printf(%d,(,(a=2)&(b=-2));的的输出出结果是:果是:DA无无输出出B结果不确定果不确定C-1D115当当c的的值不不为0时,下列,下列选项中能正确将中能正确将C的的值赋给变量量a和和b的是:的是:CA)c=b=aB)(a=c)|(b=c)C)(a=c)&(b=c)D)a=c=b16设有如下有如下变量定量定义:inti=8,k,a,b;unsignedlongw=5;doublex=1.42,y=5.2;则以下符合以下符合C语言言语

54、法的表达式是法的表达式是AAa+=a-=(b=4)*(a=3)Bx%(-3)Ca=a*3=2Dy=float(i)17设已定已定义intk=7,x=12;,;,则能使能使值为3的表达式是:的表达式是:DAx%=(k%=5)Bx%=(k-k%5)Cx%=k-k%5D(x%=k)-(k%=5)18.以下程序以下程序main()inta=12,b=12;printf(%d%dn,-a,+b);的的输出出结果是:果是:DA1010B1212C1110D111319有如下程序有如下程序main()inty=3,x=3,z=1;printf(%d%dn,(+x,a,y+),z+2);的的输出出结果是:果是

55、:DA)34B)42C)43D)3320设x和和y均均为int型型变量,且量,且x=10和和y=3,则以下以下语句句printf(%d,%dn,x+,-y);的的输出出结果是:果是:DA10,3B9,3C9,2D10,221下列可作下列可作为C语言言赋值语句的是句的是:CA)x=3,y=5B)a=b=6C)i-;D)y=int(x);22以下程序以下程序main()inta=3;printf(%dn,(,(a+=a-=a*a));的的输出出结果是:果是:DA-6B12C0D-1223.设x和和y均均为int型型变量,量,语句句组:x+=y;y=x-y;x-=y;的功能是的功能是:DA)把)把x

56、和和y按从大到按从大到小排列小排列B)把)把x和和y按从小到大排列按从小到大排列C)无确定)无确定结果果D)交)交换x和和y中的中的值.24.表示关系表示关系x=y=z的的c语言表达式言表达式为:AA)(X=Y)&(Y=Z)B)(X=Y)AND(Y=Z)C)(X=Y=Z)D)(X=Y)&(Yb)&(n=cd)运算后,运算后,n的的值为:CA)0B)1C)2D)326.有以下程序有以下程序#includemain()inta,b,c=246;a=c/100%9;b=(-1)&(-1);printf(%d,%dn,a,b);输出出结果是果是:AA)2,1B)3,2C)4,3D)2,-127.以下程

57、序的以下程序的输出出结果是果是:Dmain()inta=-1,b=4,k;k=(+a0)&!(b-=0);printf(%d%d%dn,k,a,b);A)104B)103C)003D)00428.如果如果intA=1,B=2,C=3,D=4;则条件表达式条件表达式AB?A:CD?C:D的的值是是_D_。A)4B)3C)2D)129.设有如下定有如下定义:intx=l,y=-1;,;,则语句:句:printf(“%Dn”,(x-&+y);的的输出出结果是果是:BA)1B)0C)-1D)230.设inti=2,j=1,k=3,则表达式表达式i&(i+j)&k|i+j的的值是是_C_A)0B)2C)

58、1D)3填空题填空题1.设有有说明:明:charw;intx;floary;doublez;则表达式表达式w*x+z-y值的数据的数据类型型为_double_2.设有有intx=11;则表达式表达式(x+*1/3)的的值为_3_3.下列程序的下列程序的输出出结果是果是_0.000000_main()doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf(%fn,d*y);4.设已定已定义intx=1,y=1,则表达式表达式(!x|y-)的的值是是_1_5.下列程序的下列程序的输出出结果是果是16.00,请填空。填空。main()intA=9,B=2;floatx=_6.6_,y=1.1,z;z=A/2+B*x/y+1/2;printf(%5.2fn,z);重点回顾重点回顾1C的数据的数据类型型(基本基本类型,构造型,构造类型,指型,指针类型,空型,空类型型)及其定及其定义方法。方法。2C运算符的种运算符的种类、运算、运算优先先级和和结合性。合性。3不同不同类型数据型数据间的的转换与运算。与运算。4C表达式表达式类型型(赋值表达式,算表达式,算术表达式,表达式,关系表达式,关系表达式,逻辑表达式,条件表达式,表达式,条件表达式,逗号表达式逗号表达式)和求和求值规则。5表达式表达式语句,空句,空语句,复合句,复合语句。句。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号