当前位置: 首页 > 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)
{
    case 0: case 1: case 2: case 3: case 4: case 5: k = 1; break;
    case 6 : k = 2; break;
    case 7 : k = 3; break;
    case 8 : k = 4; break;
    case 9: case 10: 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)!

相关文章:

  • DeepSeek V3 并行训练、推理优化点(一)
  • Linux losetup循环设备
  • MySQL初阶 | 库的操作
  • 项目-苍穹外卖(二)增加用户+用户分页查询
  • 十三、OSG学习笔记-osgDB文件读写
  • .net 6.0 webapi支持 xml返回xml json返回json
  • Vue.js 与 Axios 实现音乐自由
  • 初阶数据结构(C语言实现)——4.2队列
  • C++和OpenGL实现3D游戏编程【连载24】——父物体和子物体之间的坐标转换
  • JavaWeb基础二(Servlet)
  • 项目上传到Gitee过程
  • Linux《基础开发工具(中)》
  • jenkins+ant+jmeter生成的测试报告空白
  • 选择排序算法OpenMP并行优化
  • 【编程题】7-5 堆中的路径
  • 理解C++模板库:依赖名
  • Dagger 2 系列(五)——进阶之@Scope 和 @Singleton
  • 《网络安全》中RSA加密算法的计算过程
  • Windows 图形显示驱动开发-WDDM 3.2-用户模式工作提交(三)
  • NFC标签读写开发指南
  • 建行原副行长章更生涉嫌受贿罪、违法发放贷款罪被逮捕
  • 焦点访谈丨售假手段又翻新,警惕化肥“忽悠团”的坑农套路
  • 上海地铁:一孩童鞋子卡于电梯梯级处,其间未造成人员受伤
  • 澎湃读报丨多家央媒刊文关注拧紧纪律的螺丝:强化监督推动过紧日子要求落到实处
  • 申伟强任上海申通地铁集团有限公司副总裁
  • 一季度支持科技创新和制造业发展减税降费及退税4241亿元