(3) a+=a+b||e (4) a&b+c++ (5) -a&&b-c (6) k=b=c=a 解答:
本题主要考查表达式中运算符的优先级与结合性。请参阅表2.1。为了避免出错,建议读者在书写表达式时完整书写括号。 (1)答案为:(a+b)-((c--)%b)
(2)答案为:a>b?b:(c>d?a:(c 例题5:请根据下列题意写出相应的表达式。 (1) 有a、b、c、max四个变量a、b、c中的最大值,并将结果放入max中。 (2) 年龄在1到100之间(包含1和100,年龄用变量age表示)。 (3) 公式。 (4) 判断一年是否为闰年,年用year表示。满足下列两个条件之一即为闰年:① 能被4整除但不能被100整除 ②能被400整除。 解答: (1) 主要考查对条件表达式的理解和书写。答案为:max=a>b?(a>c?a:c):(b>c?b:c)。 (2) 主要考查对逻辑表达式的理解和书写。答案为:1<=age&&age<=100。 (3) 主要考查如何在计算机中表示一个数学公式。答案为:(a+b)*h/2。 (4) 主要考查对逻辑表达式的理解和书写。答案为: (year%4==0&&year0!=0)||(year@0==0)。 例题6:下列选项中两个表达式的运算结果相同的是( )。 (a)3/2和3.0/2.0 (b)3/2和3.0/2 (c) 3/2.0和3.0/2.0 (d) 3/2.0和3/2 解答: 本题考查数据类型及表达式中数据类型的隐式转换。3/2中两个操作数都为整型,运算结果仍为整型即1;3.0/2和3/2.0中一个操作数为整型另一个为浮点型,运算时整型隐式转换为浮点型,运算结果也为浮点型即1.5;3.0/2.0两个操作数均为浮点型,结果也为浮点型即1.5。答案为:(c)。 例题7: 下列程序的运行结果为:______________。 #include int a=2,b=4,i=0,x; x=a>b&&++i; cout<<\:\ cout<<\:\} 解答: 本题主要考查“短路”表达式的运算。对于表达式中的“与”运算而言,只要有一个操作数为假,结果为假。所以当第一个操作数为假时,不在求解其它操作数。对于表达式中的“或”运算而言,只要有一个操作数为真,则结果为真。所以当第一个操作数为真时,不在求解其它操作数。本题中a>b为假,所以表达式a>b&&++i为假,而++i没有执行。故i为0。答案 为:x:0 i:0 例题8:求解下列各表达式的值(其中x的值为100)。 (1) (a=1,b=2,c=3) (2) 1|3<<5 (3) 'a'+3&&!0%1 (4) x%2?“odd”:” even” 解答: (1) 逗号表达式的值是其最后一个表达式的值。答案为:3。 (2) <<运算符的优先级高于|运算符,所以先算3<<5结果为96(二进制1100000),然后与1 做按位与运算则结果为97(二进制1100001)。答案为:97。 (3) 参与本题的运算符,按优先级由高到低依次是:!运算符、算术运算符、逻辑运算符。 'a'+3时字符型首先隐式转换成整型然后相加结果为100,!0%1即1%1结果为0,100&&0结果为0。答案为:0。 (4) 算术表达式的优先级高于条件表达式,所以先算x%2结果为0,0?”odd”:”even”结 果为”even”。本题完成判断一个数是奇数还是偶数,若该数为奇数,则表达式的值为”odd”,为偶数,则表达式的值为”even”。答案为:”odd”。 例题9:下列程序运行结果为:_______________。 #include int a=23;