gpt4 book ai didi

C 编程 nan 输出

转载 作者:行者123 更新时间:2023-11-30 17:46:59 24 4
gpt4 key购买 nike

我是 C 编程的初学者,所以请在这里帮忙。我正在尝试编写一个程序,循环要求用户输入一个数字,如果数字为正数,则将其添加到总数中,如果数字为负数,则结束程序并显示平均值、最低输入和最高输入。不幸的是,无论我如何改变低值和高值,我总是得到低值的“nan”,无论高值的负数如何..请帮忙!

#include<stdio.h>
int main(void)
{
float input;
float total;
float low;
float high;
float average;
int count=0;

printf("\n\nPlease enter a positive number to continue or a negative number");
printf(" to stop: ");

scanf("%f", &input);

while (input > 0)
{
count = count + 1;
printf("\nPlease enter a positive number to continue or a negative");
printf(" number to stop: ");
scanf("%f", &input);
total = total + input;

if ( low < input )
{
( low = input );
}
else
{
( low = low );
}
}
if (input < high)
{
(high = input);
}
else
{
(high = high);
}

average = total / count;
printf("\n\n\nCount=%d",count);
printf("\n\n\nTotal=%f",total);
printf("\nThe average of all values entered is %f\n", average);
printf("\nThe low value entered: %f\n", low);
printf("\nThe highest value entered: %f\n", high);
return 0;
}

使用 gcc 编译并使用数字 1、5、4 和 -1 进行测试后,我得到以下输出

Count=3


Total=8.000000
The average of all values entered is 2.666667

The low value entered: nan

The highest value entered: -1.000000

最佳答案

您已成为垃圾值的受害者 - 这是初学者的常见错误。具体来说,它发生在这些行中 -

float total;
float low;
float high;
float average;

当您编写该内容时,系统会为变量分配一个内存位置。然而,计算机并不是无限的,所以它只是使用了曾经被其他东西使用但不再被使用的内存位置。但大多数时候,“其他东西”不会自行清理(因为这会花费很多时间),因此那里的信息会留在那里,例如 fdaba7e23f。这对我们来说完全没有意义,所以我们称之为垃圾值。

您可以通过初始化变量来解决这个问题,就像这样 -

float total=0;
float low;
float high;
float average=0;

请注意,您必须为 low 变量添加一些额外的逻辑。这是一种方法 -

printf("\n\nPlease enter a positive number to continue or a negative number");
printf(" to stop: ");

scanf("%f", &input);
low=input;
high=input;

while (input > 0)
....
....

如您所见,我刚刚复制了您的代码并在第一个 scanf 之后添加了两行。

关于C 编程 nan 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19072147/

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