使用 EOF 循环打印最小值和最大值
Printing min and max using a EOF loop
我在编写一个 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;
}
挑战是不允许我使用数组。
您的代码存在几个问题:
number
在第一次迭代前没有初始化。
scanf
期望参数是一个指针,你传入 value.
- 此外,我不认为最小值是 0(负数怎么样?),并且
最大值不应为 0。
- 如果所有数字都相同怎么办?你
没有得到正确的分钟
检查输入结束的方法有很多,我选择显式使用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;
}
您仍然需要改进错误管理。
我在编写一个 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;
}
挑战是不允许我使用数组。
您的代码存在几个问题:
number
在第一次迭代前没有初始化。scanf
期望参数是一个指针,你传入 value.- 此外,我不认为最小值是 0(负数怎么样?),并且 最大值不应为 0。
- 如果所有数字都相同怎么办?你 没有得到正确的分钟
检查输入结束的方法有很多,我选择显式使用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;
}
您仍然需要改进错误管理。