不正经题解 | 三好学生
2024-08-12 14:42:25
发布于:浙江
16阅读
0回复
0点赞
题目分析
这道题实际上是考验我们的与和或逻辑,众所周知,在c语言中与是&&或是||
所以我们就可以得到以下代码(有问题哦~)
错误代码演示
#include <iostream>
using namespace std;
int main(){
int a , b , c , d;
cin >> a >> b >> c >> d;
if(a >= 80 && b >= 80 || c >= 90 && d <= 360)
cout << "good good good";
else cout << "sorry";
return 0;
}
错误代码讲解
这个代码运行结果是没有问题的,我测试过了,但是你提交上去会发现他会有两个WA,这是为什么呢?
其实在c语言中与的优先级是比或要高的,也就是说,程序在执行的过程中会先执行与后执行或,根据上树代码,我们发现他的判断条件是以下
a >= 80 && b >= 80 || c >= 90 && d <= 360
这也就导致了会先判断或地左边和右边,只要两个中的一个成立就行了。但事实上我们需要的结果不是这个,我们是要把他拆开来比较
正确代码演示
#include <iostream>
using namespace std;
int main(){
int a , b , c , d;
cin >> a >> b >> c >> d;
if(a >= 80 && (b >= 80 || c >= 90) && d <= 360)
cout << "good good good";
else cout << "sorry";
return 0;
}
正确代码讲解
在这个正确代码中呢,我创建了四个变量,分别代表题目中要求的四个变量。
其次,这里的唯一一个不同就是判断条件变成了
a >= 80 && (b >= 80 || c >= 90) && d <= 360
在这里呢,我加上了一个()来先运行()中的内容(括号的优先级大于与),现在去尝试运行结果是没问题的,我也测试过了,现在我们只需要放心大胆的点击提交就行了。
希望大家给个小小的赞
招人启示
多余的我懒得写了,感兴趣的加吧不强求
提问时间
(尽情地提问吧!)
全部评论 4
是的嫩,我就是一只姜2506739
2024-08-13 来自 浙江
0两个平台的大佬
2024-08-13 来自 浙江
06嘚嘞
2024-08-13 来自 浙江
0
顶
2024-08-12 来自 浙江
0顶
2024-08-12 来自 浙江
0顶
2024-08-12 来自 浙江
0
有帮助,赞一个