如何在不使用c中的关系运算符的情况下返回true或false?

问题描述 投票:0回答:1

[为了娱乐,假设我们要使用c语言比较两个格式为double的数字,并且我们只能使用使用算术运算符+, -, *, /, %以及fabs()pow()的数学方程式来检查是否等于(==),小于(<)和大于(>)。与真实的关系运算符==, <, and >相似,我们编写的代码必须为每种不同类型的检查返回True(1)或False(0)。

例如,without使用除+, -, *, /, %fabs()pow()以外的任何其他运算符,如果我们确定两个变量ab相等,则应返回True或1 ,否则,返回False或0。最好返回整数0和1,而不是布尔True和False。为了使事情复杂化,我们不能使用真实的关系运算符,逻辑运算符,按位运算符或任何其他运算符。此外,我们不能使用switch语句或条件语句。怎么做?

我知道如何找到x和y的较小值,也就是说x < y可以计算为((x + y) + fabs(x-y))/2。此外,要找到x > y,则为((x + y) - fabs(x-y))/2。但是,这些方程式根据比较方程式返回值x或y,我需要它们返回0或1。类似地,如果x和y相等,我需要一些代码方程式返回0或1(==)彼此之间,并且只能使用+, -, *, /, %fabs()pow()

c mathematical-expressions
1个回答
1
投票

应用于+, -, *, /操作数的任何给定运算符double都会得到double以及fabs()pow()函数。因此,仅使用提供的运算符以及doubleinteger函数无法将fabs()转换为pow()

© www.soinside.com 2019 - 2024. All rights reserved.