gpt4 book ai didi

c - 仅使用基本数学函数对 C 中的整数进行排序

转载 作者:行者123 更新时间:2023-11-30 21:32:28 26 4
gpt4 key购买 nike

我正在尝试用 C 语言编写程序

给定三个唯一的非负输入 int输入数字,程序应对它们进行排序并按升序输出它们。对于此程序,仅允许基本的数学结构。 ( +-/*% )

输入示例如下:

Input three integer numbers: 32 29 21

然后,示例输出应该是:

Sorted numbers: 21 29 31

使用逻辑运算符,例如 > <==以及选择语句if forswitch明确不允许。

最佳答案

这有点棘手。仅使用“数学”算术函数,我认为这是不可能的(即对实数使用真正的数学运算符)。

但是,幸运的是,这是 C,我们有整数运算,例如整数除法。整数除法有一个有用的属性:a/b == 0如果a<ba/b > 0如果a>b 。我们可以利用它来编写 min返回您输入的两个数字中较小的数字的函数:

unsigned math_min(unsigned a, unsigned b) {
a++; b++; // ensure neither a nor b is zero
unsigned c = ((a/b)*b + (b/a)*a) / ((a/b) + (b/a));
return c-1; // correct for earlier increment
}

这通过计算来实现 a/b*bb/a*a 。如果我们假设ab彼此不同且为正,那么其中正好有一个非零——对应于较小值的那个。 (事实上​​,即使a==b,这个函数也能工作,因为在这种情况下,我们添加a+b并除以二)。

使用这个“仅数学”min函数,你应该能够实现排序操作;这留作练习。

关于c - 仅使用基本数学函数对 C 中的整数进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35171823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com