ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

CSP-J 运算符优先级专题训练题单

CSP-J 运算符优先级专题训练题单 本练习共14题覆盖CSP-J初赛中运算符优先级的全部核心题型。每道题均附有答案与详细解析方便教师讲解或学生自查。 第一梯队基础优先级判断第1-4题目标熟记C运算符优先级顺序能判断简单表达式的运算顺序。第1题★☆☆☆☆在C中下列运算符中优先级最高的是 。A.按位与 B.逻辑与 C.等于 D.加法答案D解析C运算符优先级从高到低大致为算术运算符,-,*,/,% 移位, 关系,,,! 位运算,^,| 逻辑,|| 赋值。因此的优先级最高。第2题★☆☆☆☆表达式a b * c在C中按以下哪种方式计算A.(a b) * cB.a (b * c)C.(a b * c)D. 由编译器随机决定答案B解析*乘法的优先级高于加法因此先计算b * c再与a相加。第3题★★☆☆☆表达式x y 5在C中赋值运算符的结合性为 因此运算顺序为 。A. 左结合(x y) 5B. 右结合x (y 5)C. 左结合x (y 5)D. 右结合(x y) 5答案B解析赋值运算符是右结合的因此x y 5被解析为x (y 5)。先将5赋给y再将y的值赋给x。第4题★★☆☆☆表达式a b c中左移和加法的优先级关系是 。A.优先级高于B.优先级高于C. 二者优先级相同从左到右计算 D. 二者优先级相同从右到左计算答案B解析加法的优先级高于左移因此a b c被解析为a (b c)。注意若想表达(a b) c必须加括号。⚡ 第二梯队混合表达式求值第5-8题目标掌握算术运算、关系运算、逻辑运算、位运算混合时的优先级顺序。第5题★★☆☆☆若有定义int a 2, b 3, c 4;则表达式a b * c % 3的值为 。A. 2 B. 3 C. 4 D. 5答案C解析*和%优先级相同高于且从左到右结合。计算顺序b * c % 3 3 * 4 % 3 12 % 3 0a 0 2 0 2。注意%和*、/优先级相同均为左结合。第6题★★★☆☆若有定义int a 5, b 3, c 4;则表达式a b || c ^ b a | c的值为 提示先于^先于|位运算先于逻辑运算。A. true B. false C. 1 D. 0答案B解析按优先级逐步展开位运算、^、|优先于逻辑运算、||。a b 5 3 1a | c 5 | 4 5c ^ b 4 ^ 3 7原式 1 || 7 5优先级高于||7 5→ 非零即真结果为true1但这里逻辑运算返回的是bool值7 5值为true在C中输出为1。最终1 || true→true || true→true输出1但选项是bool类型的话选 true。若选项为 bool 类型选 Atrue若选项为整型输出为 1。但看选项中有A. true因此选 A。注意此题在C中a b结果为整数17 5结果为布尔值true在表达式中参与运算时true被提升为1false为0因此1 || 1为true。答案为 true。第7题★★★☆☆若有定义int a 7; float x 2.5, y 4.7;则表达式x a % 3 * (int)(x y) % 2的值为 。A. 0.000000 B. 2.750000 C. 2.500000 D. 3.500000答案D解析先算(int)(x y) (int)(2.5 4.7) (int)7.2 7原式变为x a % 3 * 7 % 2a % 3 7 % 3 11 * 7 % 2 7 % 2 1*和%同级从左到右x 1 2.5 1.0 3.5float int → float第8题★★★☆☆表达式1 1 || 0 0 | 1的值为 。A. 0 B. 1 C. true D. false答案C或B取决于选项类型解析先算位运算和|1 1 10 | 1 1原式变为1 || 0 1优先级高于||0 1 01 || 0 trueC中输出为1因此选项 Ctrue正确输出为1。 第三梯队阅读程序题第9-11题目标分析含有复合表达式的程序判断输出或逻辑错误。第9题★★★☆☆阅读以下程序若输入3 4则输出为 。cppint main() { unsigned short x, y; cin x y; unsigned short z x | y 1; cout z endl; return 0; }提示的优先级高于|。A. 7 B. 8 C. 11 D. 无法确定答案C解析输入x3, y4。y 1 4 1 8。x | 8 3 | 8 11二进制0011 | 1000 1011。输出11。第10题★★★★☆阅读以下程序若输入x 2, y 3则程序输出为 。cppint main() { int x, y; cin x y; x (x | x 2) 0x33; y (y | y 2) 0x33; unsigned short z x | y 1; cout z endl; return 0; }A. 7 B. 11 C. 14 D. 15答案C解析输入x2, y3。x 2 2 2 8x | 8 2 | 8 1010 0x33 10 51 2二进制00001010 00110011 00000010。因此x2。y 2 3 2 12y | 12 3 | 12 1515 0x33 15 51 3二进制00001111 00110011 00000011。因此y3。y 1 3 1 6。z x | 6 2 | 6 6二进制0010 | 0110 0110。输出6。但选项中没有6可能是题目选项有误或计算过程需重新审视。重算x (x | x 2) 0x33x22 2 82 | 8 10二进制101010 0x330x3351001100111000001010→00001010 00110011 00000010 2。OK。y33 2 123 | 12 15111115 0x3300110011→00001111 00110011 00000011 3。OK。z x | y 1 2 | (3 1) 2 | 6 6。输出为6选项中没有建议将题目选项改为包含6。第11题★★★★☆阅读以下程序判断它的功能是 。cppint f(int x) { int cnt 0; while (x) { x x - 1; cnt; } return cnt; }A. 统计x的二进制中0的个数 B. 统计x的二进制中1的个数C. 判断x是否为2的幂 D. 计算x的绝对值答案B解析x x - 1的作用是将 x 的二进制表示中最右侧的1变为0。例如x 12(1100)x-111(1011)1100 1011 1000(8)消去了一个1。每次循环消去一个1cnt记录消去的次数即二进制中1的个数。注意的优先级x x - 1等价于x x (x - 1)因为的优先级低于-减法高于位运算所以x - 1先算。 第四梯队完善程序与综合应用第12-14题目标补全涉及运算符优先级判断的程序代码。第12题★★★☆☆下面的程序实现判断一个数是否为2的幂。请补全空缺处。cppbool isPowerOfTwo(int x) { return (x 0) (x (x - 1)) ①; }①处应填A.trueB.falseC.0D.1答案C解析判断一个数是否为2的幂的方法是(x (x - 1)) 0。例如x4(100)x-13(011)100 011 0为2的幂。注意的优先级高于所以(x (x - 1)) 0中的括号是必需的。如果写成x (x - 1) 0会被解析为x ((x - 1) 0)逻辑错误。易错点的优先级高于因此必须加括号。第13题★★★★☆阅读以下程序其输出结果为 。cppint main() { bool a true, b false, c true; bool res a b || !c a; cout res endl; return 0; }A. 0 B. 1 C. true D. false答案Dfalse解析优先级顺序!||。!c false。!c a false true false。a b true false false。false || false false。输出0C中bool输出为0/1若选项有false选D。第14题★★★★★[CSP-J 2022] 逻辑表达式题源阅读表达式(0|10|1|1|(1|1))(01(1|0)|0|1|0)0的值为 。A. 0 B. 1 C. 无法确定 D. 编译错误答案A解析按优先级逐步计算先于|( )优先。第一段(0|10|1|1|(1|1))1|1 1括号内10 0原式变为0|0|1|1|1 1第二段(01(1|0)|0|1|0)1|0 1011 00 | 0 | 1 | 0 1原式 (1) (1) 0 0输出0。注意先于|但整个表达式末尾0任何数0都等于0。 题型分布速查表题号难度题型答案核心考点1★☆☆☆☆优先级排序D2★☆☆☆☆表达式求值B*高于3★★☆☆☆结合性判断B赋值运算符右结合4★★☆☆☆优先级判断B高于5★★☆☆☆混合求值C%与*、/同级左结合6★★★☆☆混合求值A先于^先于|位运算先于逻辑运算7★★★☆☆混合求值D%与*同级最后8★★★☆☆混合求值B/C高于||位运算先于逻辑9★★★☆☆阅读程序C高于|10★★★★☆阅读程序6需调整选项位运算混合应用11★★★★☆阅读程序B与-的优先级12★★★☆☆完善程序C高于需加括号13★★★★☆程序阅读D/false!||14★★★★★综合应用A逻辑表达式优先级与短路求值 补充说明第6题true和false在C中属于bool类型输出时为1和0。若选项既有整数又有bool需根据题目语境判断。第10题计算结果为6但选项中没有建议教师调整选项如增加6或更换数据。第11题x x - 1是统计二进制中1的个数的经典写法务必掌握。第14题此题来源于CSP-J 2022真题体现了位运算与逻辑运算的混合考察难度较高。
返回列表