我的最小值和最大值在数组函数中显示的不是最大值和最小值

My Min and Max number in an array functions shows anything but the Max and Min

本文关键字:最大值 最小值 显示 数组 我的 函数      更新时间:2023-10-16

这是我的代码

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;
void buildArray(int arr[], int size) {
        srand(time(NULL));
        for (int i = 0; i < size; ++i) {
            arr[i] = rand() % 100 + 1;
        }
}
void showArray(int arr[], int size) {
    for (int i = 0; i < size; ++i) {
        cout << i << arr[i] << " ";
    }
}
void curveArray(int arr[], int size, int curve) {
    for (int i = 0; i < size; ++i) {
        arr[i] += curve;
    }
}
int maxNum(int arr[], int size) {
int maxnum = arr[0];
int position = 0;
for (int i =1; i < size; ++i) {
    if (arr[i] > maxnum ) {
        maxnum = arr[i];
        position = i;
    }
}
  return position;
}
int minNum(int arr[], int size) {
int minnum = arr[0];
int position = 0;
for (int i =1; i < size; ++i) {
    if (arr[i] < minnum) {
        minnum = arr[i];
        position = i;
    }
}
    return position;
}

int main()
{
    const int size = 10;
    int arrayx[size];
    buildArray(arrayx, size);
    showArray(arrayx, size);
    //curveArray(arrayx, size, 5);
    //showArray(arrayx, size);
    int maxVal = maxNum(arrayx, size);
    cout << endl << endl << maxVal;
    int minVal = minNum(arrayx, size);
    cout << endl << endl << minVal;

    return 0;
}

每当我尝试运行这段代码时它都会生成一个随机数组(就像它应该的那样)但是当我使用函数来获取最大值和最小值时它会生成随机数所以这是我运行它时的输出

http://imageshack.com/a/img27/725/4jv9.png

这是来自一个c++练习视频,但它与导师一起工作,而不是与我一起工作,它几乎是相同的代码!!

您正在从函数返回MaxMin值的位置,而不是实际的maxmin值。应该是

return arr[position];
不是

return position;

您的代码返回位置的最小和最大值。使用

获取值
int maxVal = arrayx[maxNum(arrayx, size)];
cout << endl << endl << maxVal;
int minVal = arrayx[minNum(arrayx, size)];
cout << endl << endl << minVal;

你的showArray也是不正确的。改为

void showArray(int arr[], int size) {
    for (int i = 0; i < size; ++i) {
        cout << arr[i] << " ";
    }
}