【发布时间】:2016-06-13 18:58:16
【问题描述】:
我想编写一个 C 程序,它接受用户输入并比较先前值的最小值和最大值。我遇到的麻烦是值的比较不断重置自己,而不是使用以前输入的值作为最小值和最大值。程序将使用文件结束循环来停止程序.....
这是我对该程序的尝试:
#include <stdio.h>
//variables for the functions:
double MinMax(double a);
//main program
int main (){
double num;
while (num!=EOF){
printf("Enter a real number: ");
scanf("%lf",&num);
MinMax(num);
}
return 0;
}
//function
double MinMax (double a){
double max=0,min=0;
if (a>max){
max=a;
}
else if (a<min){
min=a;
}
else {
}
printf("The max is %lf and the min is %lf\n",max,min);
}
【问题讨论】:
-
每次调用函数时最大值和最小值都设置为零,并且不能在函数内存储变量。您应该创建一个在其中包含这些变量的类和一个像 MinMax 这样的函数,但每次在该类中调用它时不要将最小值和最大值重置为零。然后该类可以存储变量信息,并且每次调用 minmax 时它都会更新信息。或者如答案中所说,通过引用传递变量。
-
“我想写一个 C 程序”——那么你应该标记问题 C 而不是 C++。
-
“我想写一个C++程序”——那为什么这段代码完全是C?
-
在
while (num!=EOF)首先num在第一个循环中是undefined,并且可能在下一个循环中。其次是scanf返回EOF而不是您输入的double值。但即便如此,最好检查while(scanf("%lf", &num) != 1)以了解成功扫描的项目数。