2.3其他运算符与表达式 1.知识要点 数据的操作要通过运算符实现,而数据和运算符共同组成了表达式,主要掌握以下的知识要点: 1。掌握赋值运算、逗号运算、条件运算等概念 2.掌握运算符的优先级、左结合和右结合规则。 3.掌握表达式求值时的自动转换和强制类型转换。 4.掌握常用数学函数的功能。 2.典型例题分析与解答 1.选择题 例题1:己知a=4,b=6,c=8,d=9,则”(a+,b>a+&&c>d)?+d:a<b值为()。 A.9 B.6 C.8D.0 答案:D 欢析得酯器器表务醇氯荷。意号运行、条件运第符及它们医第优先蛋的综合恩。根器这些无期行的运斑数 2.填空题 例题2:如果定义inta=2,b-3:oatx-5.5,y=3.5:则表达式(oat)(a+b)2+(int)x%(int)y的值为_。 答案:45 分析:不同类型的数据混合运算时, 可以使用强制类型转换符,强制将 一种数据类型转换为另一种数据类型后再进 行运算。对表达式,先求表达式的值,再转换值的类型,本题的运算结果为4.5。 例题3:设所有变量均为整型,则表达式(c-2,5,+,f+,c+f)的值为一 容案:9 分析:逗号运算符是是将两个或多个表达式组合成一个表达式的运算符。求解时从左至右依次计算每个表达式的 值,整个表达式的值就是最右边的表达式的值。本题的答案为9。 3.编程题 例题4:编写一个程序,从健盘输入半径和高,输出圆柱体的底面积和体积。 解:程序如下: #include<iostrean.h> void maino doubler,h,area,volume cout<请输入半径:"; cin>>r cout<请输入高” cin>>h area=3.14*r*r volume=area*h: cout<底面积是:<area<cndl cout<"体积是:"<<volume-<<endl
2.3 其他运算符与表达式 1. 知识要点 数据的操作要通过运算符实现,而数据和运算符共同组成了表达式,主要掌握以下的知识要点: 1.掌握赋值运算、逗号运算、条件运算等概念。 2.掌握运算符的优先级、左结合和右结合规则。 3.掌握表达式求值时的自动转换和强制类型转换。 4.掌握常用数学函数的功能。 2. 典型例题分析与解答 1. 选择题 例题1:已知a=4,b=6,c=8,d=9,则"(a++,b>a++&&c>d)?++d:a<b" 值为( )。 A.9 B.6 C.8 D.0 答案:D 分析:此题是考察"++"运算符、逗号运算符、条件运算符及它们运算优先级的综合题,根据这些运算符的运算规 则,得出表达式的运算结果。 2. 填空题 例题2:如果定义int a=2,b=3;float x=5.5,y=3.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为_。 答案:4.5 分析:不同类型的数据混合运算时,可以使用强制类型转换符,强制将一种数据类型转换为另一种数据类型后再进 行运算。对表达式,先求表达式的值,再转换值的类型,本题的运算结果为4.5。 例题3:设所有变量均为整型,则表达式(e=2,f=5,e++,f++,e+f)的值为_。 答案:9 分析:逗号运算符是是将两个或多个表达式组合成一个表达式的运算符。求解时从左至右依次计算每个表达式的 值,整个表达式的值就是最右边的表达式的值。本题的答案为9。 3. 编程题 例题4:编写一个程序,从键盘输入半径和高,输出圆柱体的底面积和体积。 解:程序如下: #include<iostrean.h> void main() { double r, h, area, volume; cout<<"请输入半径:"; cin>>r; cout<<"请输入高:"; cin>>h; area=3.14*r*r; volume=area*h; cout<<"底面积是: "<<area<<endl; cout<<"体积是: "<<volume<<endl; }
七、位运算 1、判断:移位运符在移位操作中,无论左移还是右移所移出的空位一律补0. 答案:错 2、填空:在位运算中操作数每右移一位其结果相当于操作数除以【1】 答案:2 3、单选:下列各运算符中,()不能作用于浮点数 A.11 B. D.、 答案:D 4、单选:下列各运算符中,()可以作用于浮点数 A.++ C.> D.& 答案:A 八、条件表达式 1、填空:若有定义语句"imta=3,b=2,c=1:",则表达式a<b?ab的值是【1】 答案:2 2、填空:如果a=1,b=2,c=3,d-4,则条件表达式a<b?ac<d?c:d的值为【1】 答案:1 3、单选:已知a=4,b=6,c=8,d-9,则(a+,b>a+&&c>d)?+d:a<b"值为(. A.9 B. 8 D.0 答案:D 九、赋值运算 1、填空:设n=10,i-4,则赋值运算n%-it1执行后n的值是【1】 答案:0 2、填空:若有定义语句"itk=7,x=l2;"则表达式(x%=k)-(k%=5)的值为【1】, 答案:3 3、判断:已知inta5):表达式(a=7t(a=3)具有二义性 答案:对 十、强制类型转换 1、填空:如果定义inta=2,b=3;oatx=5.5,y-3.5;则表达式(oat)(a+b)2+(imt)x%(imt)y的值为 【1】. 答案:4.5 2、填空:在C+语言中,表达式的类型转换方式有两种隐含转换和【1】转换 答案:强制口强制类型 3、判断:隐含的类型转换都是保值映射显式的类型转换都是非保值映射 答案:错 4、单选:下列关于类型转换的描述中,()是错误的
七、位运算 1、判断:移位运符在移位操作中,无论左移还是右移,所移出的空位一律补O. 答案:错 2、填空:在位运算中,操作数每右移一位,其结果相当于操作数除以【1】. 答案:2 3、单选:下列各运算符中,( )不能作用于浮点数. A. || B. && C. ! D. ~ 答案:D 4、单选:下列各运算符中,( )可以作用于浮点数. A. ++ B. % C. >> D. & 答案:A 八、条件表达式 1、填空:若有定义语句"int a=3, b=2, c=1;",则表达式a<b?a:b的值是【1】. 答案:2 2、填空:如果a=1,b=2,c=3,d=4,则条件表达式a<b?a:c<d?c:d的值为【1】. 答案:1 3、单选:已知a=4,b=6,c=8,d=9,则"(a++,b>a++&&c>d)?++d:a<b" 值为( ). A. 9 B. 6 C. 8 D. 0 答案:D 九、赋值运算 1、填空:设n=10,i=4,则赋值运算n%=i+1执行后,n的值是【1】. 答案:0 2、填空:若有定义语句"int k=7, x=12;",则表达式(x%=k) - (k%=5) 的值为【1】. 答案:3 3、判断:已知:int a(5);表达式(a=7)+(a=3)具有二义性. 答案:对 十、强制类型转换 1、填空:如果定义int a=2,b=3;float x=5.5,y=3.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为 【1】. 答案:4.5 2、填空:在C++语言中,表达式的类型转换方式有两种:隐含转换和【1】转换. 答案:强制□强制类型 3、判断:隐含的类型转换都是保值映射,显式的类型转换都是非保值映射. 答案:错 4、单选:下列关于类型转换的描述中,( )是错误的
A. 在不同类型操作数组成的表达式中,其表达式类型一定是最高类型double型 B.逗号表达式的类型是最后一个表达式的类型 C. 赋值表达式的类型是左值的类型 D.在由低向高的类型转换中是保值映射 答案:A 5、单选:下列表达式中,()是非法的.已知inta=5,float b=5.5; A.a%3+b B.b*b&&++a C.(a>b)+ (int(b)%2) D.-a+b 答案:D 十一、求字节 1、填空:【1】运算符用于计算其操作数在内存中所占的字节数 答案:sizeof 十二、逗号运算 1、填空:设所有变量均为整型,则表达式(e=2,f=5,c+,f+,c+f)的值为【1】 答案:9 2、单选:下列表达式中,()是合法的.已知:double m=3.2:intn=3 A.m<<2 B.(m+n)In C. !m*=n D.m=5,n=3.1,mtn 答案:D 十三、运算符优先级 1、判断:运算符的优先级和结合性可以确定表达式的计算顺序 答案:对 2、判断:算术运算符的运算优先级别高于关系运算符 答案:对 3、判断:在C+程序中,逗号运算符的优先级最低 答案:对 4、单选:运算符+、=、*、>=中,优先级最高的运算符是(), A.+ B. ! D.>= 答案:C 5、单选:下列各运算符中,()优先级最低 A.?: B. c. D.!= 答案:A 6、单选:下列各运算符中,()优先级最高 A.+(双目) B.*(单目) C.<= D.*= 答案:B 7、单选:下列各运算符中,()运算的结合性从左到右 A.三目 B.赋值 C.比较 D.单目 答案:C
A. 在不同类型操作数组成的表达式中,其表达式类型一定是最高类型double 型 B. 逗号表达式的类型是最后一个表达式的类型 C. 赋值表达式的类型是左值的类型 D. 在由低向高的类型转换中是保值映射 答案:A 5、单选:下列表达式中,( )是非法的.已知:int a=5;float b=5.5; A. a%3+b B. b*b&&++a C. (a>b)+ (int(b)%2) D. -a+b 答案:D 十一、求字节 1、填空:【1】运算符用于计算其操作数在内存中所占的字节数. 答案:sizeof 十二、逗号运算 1、填空:设所有变量均为整型,则表达式(e=2,f=5,e++,f++,e+f)的值为【1】. 答案:9 2、单选:下列表达式中,( )是合法的.已知:double m=3.2;int n=3; A. m<<2 B. (m+n)|n C. !m*=n D. m=5,n=3.1,m+n 答案:D 十三、运算符优先级 1、判断:运算符的优先级和结合性可以确定表达式的计算顺序. 答案:对 2、判断:算术运算符的运算优先级别高于关系运算符. 答案:对 3、判断:在C++程序中,逗号运算符的优先级最低. 答案:对 4、单选:运算符+、!=、*、>=中,优先级最高的运算符是( ). A. + B. != C. * D. >= 答案:C 5、单选:下列各运算符中,( )优先级最低. A. ?: B. | C. || D. != 答案:A 6、单选:下列各运算符中,( )优先级最高. A. +(双目) B. *(单目) C. <= D. *= 答案:B 7、单选:下列各运算符中,( )运算的结合性从左到右. A. 三目 B. 赋值 C. 比较 D. 单目 答案:C