我正在编写一个程序,它使用 while 循环从输入文件中读取整数,找到最小和最大的数字并输出它。我的输出文件成功地显示它找到了最大的数字,但它说最小的数字是 0,即使在我的输入文件中最小的数字是 11。这是我的代码:
#include <fstream>
#include <string>
#include <iomanip>
#include <iostream>
using namespace std;
int main()
{
fstream instream;
instream.open("lab7_input.txt");
ofstream outstream;
outstream.open("lab7_output.txt");
int next, largest, smallest;
largest = 0;
smallest = 0;
while (instream >> next)
{
if (largest < next)
{
largest = next;
}
if (smallest > next)
{
smallest = next;
}
}
outstream << "The largest number is: " << largest << endl;
outstream << "The smallest number is: " << smallest << endl;
instream.close();
outstream.close();
return 0;
}
这是你的问题:smallest = 0;
测试最小值/最大值时,请尝试将您的 min
或 max
变量初始化到它们范围的另一端。使用 INT_MIN
和 INT_MAX
来执行此操作。试试这个:
#include <climits>
...
int next, largest, smallest;
largest = INT_MIN;
smallest = INT_MAX;
现在,无论您的数字集中是什么,您的程序都可以确保具有最大/最小值。
我是一名优秀的程序员,十分优秀!