返回 课程
信奥AC之路-1级
0% 完成
0/0 步骤
-
第1课 开发环境与基础输出5 主题|小节
-
第2课 算术运算符7 主题|小节
-
第3课 printf与运算输出7 主题|小节
-
第4课 数的进制与拆位6 主题|小节
-
第5课 变量与基础运算17 主题|小节
-
第6课 常量与取整运算8 主题|小节
-
第7课 关系运算8 主题|小节
-
第8课 逻辑运算9 主题|小节
-
第9课 输入与计算进阶10 主题|小节
-
第10课 if语句及双分支语句8 主题|小节
-
第11课 if语句及双分支进阶11 主题|小节
-
第12课 三目运算9 主题|小节
-
第13课 多分支、多if和switch语句11 主题|小节
-
第14课 循环(基本输出)7 主题|小节
-
第15课 循环(While+If)8 主题|小节
-
第16课 循环(计数、求和、求乘积)10 主题|小节
-
第17课 循环进阶(While+)8 主题|小节
-
第18课 do-while及while其他用法8 主题|小节
-
第19课 For循环基础9 主题|小节
-
第20课 For循环进阶8 主题|小节
课 进展
0% 完成
“现在,”我拿起粉笔,”让我们看看如何把不同的运算组合在一起!”
9.2.1 算术运算符与关系运算符的组合
int a, b;
double x, y;
scanf("%d%d%lf%lf", &a, &b, &x, &y);
// 算术运算和关系运算的组合
bool result1 = (a + b > 10); // 和是否大于10
bool result2 = (a * b <= 100); // 积是否不超过100
bool result3 = ((a + b) / 2 >= a); // 平均值是否不小于a
bool result4 = (x / y < 2.5); // 两个小数的除法比较
// 多重运算组合
bool result5 = ((a + b) * 2 > (x + y)); // 整数运算结果与小数比较
[图片:展示运算符优先级的层次结构]
练习题:
- 选择题:表达式 a + b > c * d 的运算顺序是:
A. 先算加法再算乘法再比较
B. 先算乘法再算加法再比较
C. 从左到右依次计算
D. 先比较再算术运算
正确答案:B
解析:乘法优先级高于加法,而算术运算优先级高于关系运算。
- 判断题:在表达式 (a + b) * c > d 中,如果去掉括号,运算结果可能会不同。
正确答案:√
解析:没有括号时,会先计算b*c,改变运算顺序,可能导致结果不同。
9.2.2 逻辑运算符的组合使用
// 输入数据
int age, score;
double height;
scanf("%d%d%lf", &age, &score, &height);
// 简单逻辑运算
bool isTeenager = (age >= 13 && age <= 19); // 判断是否是青少年
bool isQualified = (score >= 60 || height > 1.7); // 判断是否达标
// 复杂逻辑组合
bool canJoin = (age >= 15 && score >= 85) || (height > 1.8 && score >= 75);
// 15岁以上且85分以上,或身高超过1.8米且75分以上可以参加
// 带括号的复杂逻辑
bool isSpecial = !(age < 18) && (score > 90 || height > 1.75);
// 年满18岁,且成绩高于90或身高超过1.75米
[图片:展示逻辑运算的真值表和组合]
9.2.3 复杂混合运算实战
// 示例:学生评分系统
int score, attendance;
double homework_rate;
scanf("%d%d%lf", &score, &attendance, &homework_rate);
// 多重条件判断
// 条件1:成绩大于85且出勤率大于90%
bool condition1 = (score > 85 && attendance > 90);
// 条件2:成绩大于75,出勤率大于85%,作业完成率大于95%
bool condition2 = (score > 75 && attendance > 85 && homework_rate > 0.95);
// 最终评判(满足任一条件)
bool isExcellent = condition1 || condition2;
🔬 实验一:成绩评估器
题目描述:
输入一个学生的三科成绩和考试用时(分钟),判断是否达到优秀标准:
- 三科总分超过250分,或者
- 平均分超过85分且用时少于120分钟
// 输入处理
int s1, s2, s3, time;
scanf("%d%d%d%d", &s1, &s2, &s3, &time); // 依次输入三科成绩和用时
// 计算总分和平均分
int total = s1 + s2 + s3; // 计算总分
double avg = total / 3.0; // 计算平均分(使用3.0确保结果为小数)
// 判断条件
bool cond1 = (total > 250); // 总分条件
bool cond2 = (avg > 85 && time < 120); // 平均分和时间条件
// 最终判断(满足任一条件即可)
bool isExcellent = cond1 || cond2;
// 输出结果
printf("%dn", isExcellent); // 1表示达标,0表示不达标
练习题:
- 选择题:以下哪个表达式可以判断一个数是否在10到20之间(包含10和20)?
A. x > 10 && x < 20
B. x >= 10 || x <= 20
C. x >= 10 && x <= 20
D. x > 10 || x < 20
正确答案:C
解析:需要使用>=和&&来表示”大于等于10且小于等于20″。
- 判断题:!(a > b) && c 与 !(a > b && c) 是等价的。
正确答案:×
解析:根据德摩根定律,!(a > b && c) 等价于 (!a > b) || !c。