gpt4 book ai didi

c - 使用 NAN、INFINITY 和 -INFINITY 在 C 中冒泡排序

转载 作者:太空宇宙 更新时间:2023-11-04 03:24:13 27 4
gpt4 key购买 nike

我一直在试验冒泡排序代码,因为我最近开始了解 C 代码。但是,我无法将 NAN 输入到代码中,以便在构建和运行它时打印出来。我在使用 INFINITY AND -INFINITY 时遇到了同样的问题。但是,当我运行代码并将 NAN、INFINITY 和 -INFINITY 作为整数之一输入时,该代码有效。帮助将不胜感激,谢谢。

/* Bubble sort code */

#include <stdio.h>
#include <math.h>

int main()
{
float array[100], swap;
int c, d, n;

printf("Enter number of elements\n");
scanf("%d", &n);

printf("Enter %d integers\n", n);

for (c = 0; c < n; c++)
scanf("%f", &array[c]);

for (c = 0; c < (n - 1); c++)
{
for (d = 0; d < n - c - 1; d++)
{
if (array[d] > array[d + 1]) /* For decreasing order use < */
{
swap = array[d];
array[d] = array[d + 1];
array[d + 1] = swap;
}
}
}

printf("Sorted list in ascending order:\n");

for (c = 0; c < n; c++)
printf("%f\n", array[c]);

return 0;
}

最佳答案

浮点值NAN相对于其他值是无序的。

如果 NAN value 是 < 的操作数, > , <= , >= , 或 ==运算符,结果将始终评估为 false。另外,如果 NAN!= 的操作数运算符,结果将始终为真。由此得出 NAN != NAN是真的 NAN == NAN是假的。

因此,如果您尝试对包含 NAN 的 float 列表进行排序,您将不会获得任何有意义的结果。 .您需要使用 isnan 检查此值函数并忽略它或要求用户输入不同的数字。

-infinf然而被命令。您可以对包含这些值的列表进行排序。

使用您现有的代码,我们可以看到 inf-inf处理得当:

Enter number of elements
5
Enter 5 integers
3.5
infinity
2.9
9
-infinity
Sorted list in ascending order:
-inf
2.900000
3.500000
9.000000
inf

但是NAN不是:

Enter number of elements
6
Enter 6 integers
8.4
7.5
nan
6.7
3.5
4.4
Sorted list in ascending order:
7.500000
8.400000
nan
3.500000
4.400000
6.700000

关于c - 使用 NAN、INFINITY 和 -INFINITY 在 C 中冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42578497/

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