我非常喜欢用C语言编程,所以请在这里帮忙。我正在尝试编写一个循环要求用户输入数字的程序,如果数字为正,则将其添加到总数中,如果为负数,则结束程序并显示平均,最低输入和最高输入。不幸的是,无论我用低和高的东西改变什么,我一直得到'低'的低点,无论高的负数...请帮忙!
#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
答案 0 :(得分:0)
你已成为垃圾价值的牺牲品 - 这对初学者来说是一个常见的错误。具体来说,它发生在这些行 -
float total;
float low;
float high;
float average;
编写时,系统会为变量分配一个内存位置。虽然计算机不是无限的,但它只是使用过去被其他东西使用的内存位置,但不再使用它。但大多数情况下,“其他东西”并不会自行清理(因为它需要花费很多时间),因此那里的信息就会留在那里,例如fdaba7e23f
。这对我们来说完全没有意义,所以我们称之为垃圾值。
您可以通过初始化变量来解决此问题,如此 -
float total=0;
float low;
float high;
float average=0;
请注意,您必须为低变量添加一些额外的逻辑。这是一种方法 -
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
之后添加了两行。
答案 1 :(得分:0)
首先,我不知道你是否注意到它,你的数量和总数都搞砸了。
除了@Drgin
给出的初始化答案外,请更改执行顺序int total = input;
while (input > 0)
{
printf("\nPlease enter a positive number to continue or a negative");
printf(" number to stop: ");
scanf("%f", &input);
count = count + 1;
total = total + input;