我在编写从标准输出中读取实数的C程序时遇到困难,并确定该数字是否与之前读取的所有其他数字相比是最大值还是最小值。程序应该读取另一个实数,直到EOF发生。以下是我对此问题的尝试:
#include <stdio.h>
int main()
{
double maximum = 0, minimum = 0, number;
while (number != EOF) {
printf("Enter a number: ");
scanf("%lf", &number);
printf("%d", EOF);
if (number > maximum) {
maximum = number;
}
else if (number < minimum) {
minimum = number;
}
}
printf("\n Max number is: %lf", maximum);
printf("Min number is: %lf", minimum);
return 0;
}
挑战是我不允许使用数组。
答案 0 :(得分:1)
您的代码存在以下问题:
number
在第一次迭代之前未初始化。scanf
期望参数为指针,传递值。有很多方法可以检查输入结束,我选择明确使用feof
尝试类似这样的代码:
#include <float.h>
#include <stdio.h>
int main()
{
double maximum = -DBL_MAX, minimum = DBL_MAX, number;
while (!feof(stdin)) {
printf("Enter a number: ");
scanf("%lf", &number);
if (number > maximum) {
maximum = number;
}
if (number < minimum) {
minimum = number;
}
}
printf("\n Max number is: %lf", maximum);
printf("Min number is: %lf", minimum);
return 0;
}
但是,您还需要改进错误管理。