NO.12十六届蓝桥杯备战|关系操作符|操作符连用|浮点数比较|练习2道(C++)

关系操作符

关系操作符介绍

⽤于⽐较的表达式,称为“关系表达式”(relational expression),⾥⾯使⽤的运算符就称为“关
系运算符”(relational operator),主要有下⾯6个。

运算符描述
>⼤于运算符,⽤于⽐较两个数值,如果左侧数值⼤于右侧数值,则返回1(真),否则返回0(假)
<⼩于运算符,⽤于⽐较两个数值,如果左侧数值⼩于右侧数值,则返回1(真),否则返回0(假)
>=⼤于等于运算符,⽤于⽐较两个数值,如果左侧数值⼤于或等于右侧数值,则返回1(真),否则返回0(假)
<=⼩于等于运算符,⽤于⽐较两个数值,如果左侧数值⼩于或等于右侧数值,则返回1(真),否则返回0(假)
==相等运算符,⽤于⽐较两个值是否相等,如果相等,则返回1(真),否则返回0(假)
!=不等于运算符,⽤于⽐较两个值是否不相等,如果不相等,则返回1(真),否则返回0(假)
关系表达式通常返回 0 或 1 ,表⽰真假( 0 表⽰假,所有非零值表示真)。⽐如, 20 > 12 返回1 , 12 > 20 返回 0 。
关系表达式常⽤于 if 或 while 结构。
if (x == 3)  
{  
	cout << "x is 3" << endl;  
}

注意:相等运算符 == 与赋值运算符 = 是两个不⼀样的运算符,不要混淆。有时候,可能会不⼩⼼写出下⾯的代码,它可以运⾏,但很容易出现意料之外的结果

if (x = 3) ...
关系操作符连⽤

多个关系运算符不宜连⽤

i < j < k

上⾯示例中,连续使⽤两个⼩于运算符。这是合法表达式,不会报错,但是通常达不到想要的结果,即不是保证变量 j 的值在 i 和 k 之间。因为关系运算符是从左到右计算,所以实际执⾏的是下⾯的表达式

(i < j) < k

上⾯式⼦中, i < j 返回 0 或 1 ,所以最终是 0 或 1 与变量 k 进⾏⽐较。如果想要判断变量 j 的值是否在 i 和 k 之间,应该使⽤下⾯的写法。

i < j && j < k
浮点数⽐较相等

在⽐较浮点数时,由于浮点数在计算机中是以有限精度表⽰的,也就是说有些浮点数在内存中其实⽆法精确保存,这可能导致浮点数⽐较中的⼀些精度误差问题。
如果直接使⽤ == 来⽐较两个浮点数,很可能会由于这些微⼩的误差导致不准确的结果。

#include <iostream>  

using namespace std;  

int main()  
{  
	double a = 0.1;  
	double b = 0.2;  
	double c = 0.3;  
	
	if (a + b == c)  
		cout << "a + b == c" << endl;  
	else  
		cout << "a + b != c" << endl;  
	
	return 0;  
}

![[Pasted image 20250211043933.png]]

#include <iostream>  
#include <cmath>

using namespace std;  

int main()  
{  
	double a = 0.1;
	double b = 0.2;  
	double c = 0.3;  
	
	if (fabs((a + b) - c) < 1e-9) // 1e-9 表⽰允许的误差范围  
		cout << "a + b 约等于 c" << endl;  
	else  
		cout << "a + b 不等于 c" << endl;  
	
	return 0;  
}

练习

B2044 有一门课不及格的学生
#include <iostream>
using namespace std;

int a, b, c;

int main()
{
    cin >> a >> b >> c;
    int s = 0;
    if (a < 60)
        s++;
    if (b < 60)
        s++;
    if (c < 60)
        s++;
    if (s == 1)
        cout << 1 << endl;
    else
        cout << 0 << endl;

    return 0;
}
#include <iostream>  

using namespace std;

int main()  
{  
	int a, b, c;  
	int s = 0;  
	
	cin >> a >> b >> c;  
	if ((a < 60) + (b < 60) + (c < 60) == 1)  
		cout << 1 << endl;  
	else  
		cout << 0 << endl;  
	
	return 0;  
}

因为⼀个关系操作符计算的结果如果是真就是 1 ,如果是假就是 0 ,所以这⾥我们把三⻔成绩判断的结果相加,如果等于 1 ,就说明只有⼀⻔成绩不及格,也能达到题⽬的要求,⼀定程度上简化了代码。

#include <iostream>  

using namespace std;  

int main()  
{  
	int a1, a2, n;  
	
	cin >> a1 >> a2 >> n;  
	if (n == 1)  
		cout << a1 << endl;  
	else if (n == 2)  
		cout << a2 << endl;  
	else  
		cout << a2 + (n - 2) * (a2 - a1) << endl;  
	
	return 0;  
}

![[Pasted image 20250211050632.png]]

#include <iostream>
using namespace std;

int a1, a2, n;

int main()
{
    cin >> a1 >> a2 >> n;
    int d = a2 - a1;
    int ret = (n - 1) * d + a1;
    cout << ret << endl;

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值