当前位置: 首页 > news >正文

【c语言逻辑运算和判断选取精选题】

c语言逻辑运算和判断选取精选题

  • 一、易错题
    • 1.1👑 运算符的优先级
    • 1.2👑三目运算符嵌套使用
    • 1.3👑三角形的形状
    • 1.4👑 四个数排大小
    • 1.5👑 同一变量连续递增递减
    • 1.6👑 判断闰年
    • 1.7👑 if语句变switch
    • 1.8👑如何算优惠

🍻适合计算机二级,考研复试,期末复习…

一、易错题

1.1👑 运算符的优先级

在 C 语言中,运算符的优先级顺序为:算术运算符优先级较高,用于进行基本的数值运算,如加、减、乘、除等;关系运算符用于比较大小、相等关系等,优先级低于算术运算符;逻辑与运算符(&&)用于逻辑判断,优先级低于关系运算符;赋值运算符用于给变量赋值,优先级是最低的。
答案C

逻辑运算符优先级由高到底如下:

优先级运算符名称/描述示例结合性
1() [] . ->函数调用、成员访问a[5], obj.x左到右
2! ~ ++ – - +逻辑非、位非、自增自减!flag, -num右到左
3* / %乘、除、取模a*b, 7%3左到右
4+ -加、减x+y, 5-3左到右
5<< >>位移运算a<<2, b>>1左到右
6< <= > >=关系运算符x>5, y<=10左到右
7== !=相等性判断a==0, b!=NULL左到右
8&位与flags & 0x01左到右
9^位异或a ^ b左到右
10|位或x | y左到右
11&&逻辑与cond1 && cond2左到右
12||逻辑或flag1 || flag2左到右
13?:条件运算符x>0?1:0右到左
14= += -= *= 等赋值运算符a=5, b+=3右到左
15,逗号运算符a=1, b=2左到右

1.2👑三目运算符嵌套使用

这道题主要考查三目运算符的嵌套使用。三目运算符的格式为 表达式1 ? 表达式2 : 表达式3,当 表达式1 为真时,整个表达式的值为 表达式2 的值;当 表达式1 为假时,整个表达式的值为 表达式3 的值。
在 printf(“\n%d\n”, k<a ? k:c<b ? c:a); 中,先看最外层的三目运算符 k<a ? k:c<b ? c:a,判断条件是 k<a,已知 k = 4,a = 3,4<3 为假。
因为 k<a 为假,所以取冒号后面的部分,即 c<b ? c:a。再判断 c<b,已知 c = 1,b = 2,1<2 为真,所以取 c 的值。
因此,整个表达式的值为 c 的值,也就是 1。
答案D

1.3👑三角形的形状


【1】处是判断输入的a、b、c三边能否构成三角形。根据三角形的性质,任意两边之和要大于第三边,即a + b > c、a + c > b 、b + c > a ,同时边长不能为非正数,所以还需满足a > 0、b > 0、c > 0 ,这些条件需同时成立,用逻辑与&&连接。
【2】处是判断等边三角形。等边三角形的特征是三条边都相等,即a、b、c三边两两相等,用逻辑与&&连接a == b和b == c (因为若这两个成立,自然a == c也成立)来判断。
【3】处是判断等腰三角形。等腰三角形是至少有两条边相等,所以只要a == b 、a == c 、b == c这三个条件中有一个成立即可,用逻辑或||连接来实现判断 。
答案:
【1】(a + b > c) && (a + c > b) && (b + c > a) && (a > 0) && (b > 0) && (c > 0)
【2】(a == b) && (b == c)
【3】(a == b) || (a == c) || (b == c)

1.4👑 四个数排大小

程序从输入的四个数 a、b、c、d 开始,首先比较 a 和 b ,若 a < b ,就交换它们的值,这样能保证 a 大于等于 b 。
接着对 c 和 d 进行比较(即判断【1】处条件 c < d ),如果 c 小于 d ,交换二者的值,使得 c 大于等于 d 。
然后比较 a 和 c ,若 a < c ,交换它们的值,此时 a 成为 a 和 c 中的较大值。
再比较 b 和 c (即判断【2】处条件 b < c ),若 b 小于 c ,交换它们的值,保证 b 大于等于 c 。
之后分别比较 b 和 d 、c 和 d ,并在满足条件时交换值。
答案
【1】(c < d)
【2】(b < c)

1.5👑 同一变量连续递增递减

若有说明语句:int a = 1, b = 0; 则表达式 ++a * --a == b? 12%5:‘x’ 的的值【】

先看 ++a * --a 这部分:
++a 是先自增,a 的初始值为 1,执行 ++a 后,a 的值变为 2。
–a 是先自减,此时 a 的值为 2,执行 --a 后,a 的值变为 1。
然后计算乘法 ++a * --a,即 2 * 1,结果为 2。
接着看 ++a * --a == b 这个条件判断:
前面已算出 ++a * --a 的结果为 2,而 b = 0,所以 2 == 0 这个条件判断结果为 0(假)。
最后看整个条件表达式 ++a * --a == b? 12%5 : ‘x’:
因为条件 ++a * --a == b 为假,所以表达式的值取 : 后面的值,即 ‘x’。
答案 ‘x 或 120’

注意字符别忘记单引号’',只写x是不对的!!!
当时马虎,++a * --a 两边同时对1增和对1减了!

1.6👑 判断闰年

解析
闰年的判断规则是:能被 400 整除的年份是闰年,此外能被 4 整除但不能被 100 整除的年份也是闰年。
第一个 if 语句 if(y%400==0) f = 1; 已经判断了能被 400 整除的情况。
接下来的 else if 应该判断能被 4 整除但不能被 100 整除的情况,所以【1】处应填入 (y % 4 == 0 && y % 100 != 0) ,当满足这个条件时,将 f 赋值为 1,表示是闰年。
前两个条件都不满足时,说明该年份不是闰年,所以【2】处应将 f 赋值为 0,即 f = 0; 。
答案
【1】(y % 4 == 0 && y % 100 != 0)
【2】f = 0;

1.7👑 if语句变switch


switch 语句的表达式需要一个能产生整数值的表达式,这里根据 if 语句是根据 mark 的值来判断,所以 switch 后的括号内应填 mark / 10,这样可以将 mark 的值映射到几个离散的整数值,方便与 case 后的常量表达式匹配。
对于 case 标签,根据 if 语句的条件,当 mark 在 60 以下时 k = 1,此时 mark / 10 的值小于 6,所以第一个 case 可以写成 case 0: case 1: case 2: case 3: case 4: case 5,都执行 k = 1 。
当 mark 在 60(含)到 70 之间时 k = 2,此时 mark / 10 的值为 6,所以有 case 6: k = 2; break; 。
当 mark 在 70(含)到 80 之间时 k = 3,此时 mark / 10 的值为 7,所以有 case 7: k = 3; break; 。
当 mark 在 80(含)到 90 之间时 k = 4,此时 mark / 10 的值为 8,所以有 case 8: k = 4; break; 。
当 mark 在 90(含)到 100 之间时 k = 5,此时 mark / 10 的值为 9 或者 10,所以可以写成 case 9: case 10: k = 5; break;

switch(mark/10){case0:case1:case2:case3:case4:case5:k=1;break;case6:k=2;break;case7:k=3;break;case8:k=4;break;case9:case10:k=5;break;}

1.8👑如何算优惠

第一个 switch 语句根据输入的汽油品种 b 来确定汽油的单价,已知汽油品种 ‘b’ 的单价是 1.35 ,所以【1】处应填入 r1 = 1.35 。
第二个 switch 语句根据输入的服务类型 c 来确定优惠率,已知服务类型 ‘e’ 对应的优惠率是 10%(即 0.1),所以【2】处应填入 ‘e’ 。
计算应付款 m 时,需要用汽油单价 r1 乘以加油量 a ,再乘以 (1 - 优惠率 r2) ,所以【3】处应填入 a * r1 * (1 - r2) 。
答案
【1】r1 = 1.35
【2】‘e’
【3】a * r1 * (1 - r2)\

注意是(1 - 优惠率 r2)!

http://www.jsqmd.com/news/447070/

相关文章:

  • 谈谈Unity引擎中内存管理——从一次线上事故说起
  • 智能研发AI平台的成本预测:如何制定合理的预算?(Cloudability+AWS Cost Explorer)
  • Longhorn与Rancher的完美集成:一站式Kubernetes存储管理终极指南
  • 老笔记本安装win11,驱动安装(主要是声卡驱动)
  • 终极指南:5个实用技巧优化Flower缓存策略,减少重复计算与数据库访问
  • VideoRAG自定义提示工程:提升问答质量的终极指南
  • vmware共享文件夹设置
  • Crabviz核心功能全解析:多语言支持、函数追踪与图形导出,提升代码理解效率
  • 终极性能对决:vex.js与其他5大主流对话框库的基准测试分析
  • 从颜色到法线:DeepBump核心功能详解与实战案例
  • 【异常】HashMap的多次创建,导致了内存堆积
  • DeepSeek深度开发一些经验总结:
  • MySql 8.0版本使用select group by报错的解决方案
  • 大数据-241 离线数仓 - 实战:电商核心交易数据模型与 MySQL 源表设计(订单/商品/品类/店铺/支付)
  • 解决Component组件化框架的10个常见问题:新手必备解决方案
  • 怎样下载安装使用nvm,并安装node和npm
  • Atom Package Manager深度解析:核心功能与架构原理
  • Mockery包管理终极指南:InPackage vs KeepTree模式深度对比
  • OS6.【Linux】基本指令入门(5)
  • 探索Win-SSHFS安全机制:如何保护你的远程文件传输
  • dockerfiles项目贡献指南:如何提交PR分享你的Dockerfile文件
  • 7分钟掌握Git快速统计工具:从安装到高级分析的完整指南
  • 2025终极指南:如何用dh-virtualenv构建隔离式Python Debian包的完整实践
  • 交通数据实时获取指南:基于awesome-public-real-time-datasets的实践教程
  • Transactional Email Templates终极指南:5个实用自定义技巧打造完美邮件体验
  • Riverpod状态持久化终极指南:如何实现离线支持和数据缓存
  • video.min.js videojs播放器插件使用详解
  • 拉格朗日插值算法原理及简单示例
  • 终极指南:为什么选择Lovefield关系型数据库而非IndexedDB
  • 银行家算法-安全性检查算法(C语言实现)