我正在尝试编写一个使用类和函数获取数组中max和min的代码。
#include "Header.h"
int MaxMin::MaxArray(int Numbers[5])
{
for (int i = 0; i < 5; i++)
{
Numbers[i];
if (Numbers[i] > MaxNum)
MaxNum = Numbers[i];
}
return MaxNum;
}
int MaxMin::MinArray(int Numbers[5])
{
for (int i = 0; i < 5; i++)
{
Numbers[i];
if (Numbers[i] < MinNum)
MinNum = Numbers[i];
}
return MinNum;
}
这是main.cpp
#include "Header.h"
#include <iostream>
using namespace std;
void main()
{
MaxMin N;
int Numb[5];
int choice;
for (int i = 0; i < 5; i++)
{
cout << "Enter the array Number " << i << " :";
cin >> Numb[i];
cout << endl;
}
cout << "Your max Number is : " << N.MaxArray(Numb) << endl;
cout << "Your Min Number is : " << N.MinArray(Numb) << endl;
system("Pause");
}
最大数字工作正常,但最小数字结果为0!
答案 0 :(得分:1)
问题是您在开始搜索之前没有设置默认的最大/最小值。这意味着它将从0开始,假设你只有正数可能适用于最大值但会失败最小值(负数相反,正数和负数都失败)。
有两种方法可以解决这个问题。 1将原始值设置为最小值(最大值)或最大值(最小值)允许值,或者将其设置为第一个值。
这样:
int MaxMin::MaxArray(int Numbers[5])
{
MaxNum = Numbers[0];
for (int i = 1; i < 5; i++)
{
if (Numbers[i] > MaxNum)
MaxNum = Numbers[i];
}
return MaxNum;
}
int MaxMin::MinArray(int Numbers[5])
{
MinNum = Numbers[0];
for (int i = 1; i < 5; i++)
{
if (Numbers[i] < MinNum)
MinNum = Numbers[i];
}
return MinNum;
}