【发布时间】:2014-07-15 09:47:20
【问题描述】:
所以这就是我想要做的 - 编写一个包含 50 个值的数组的程序,获取数组中的最高数字并将其打印出来。不过,我撞到了一堵砖墙。我很确定我对函数中的返回感到非常困惑,例如为什么 findSmall 和 findBig 函数的 for 循环中的索引“未定义”?
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int findSmallest(int array[], int size, int index)
{
int index_of_smallest_value = index;
for (int i = index + 1; i < size; i++)
{
if (array[i] < array[index_of_smallest_value])
{
index_of_smallest_value = i;
}
}
return index_of_smallest_value;
}
int findBiggest(int array[], int size, int index)
{
int index_of_biggest_value = index;
for (int i = index + 1; i < size; i++)
{
if (array[i] > array[index_of_biggest_value])
{
index_of_biggest_value = i;
}
}
return index_of_biggest_value;
}
int findSmall(int array[], int size)
{
int index = 0;
for (int i = 0; i < size; i++)
{
index = findSmallest(array, size, i);
//cout << index << endl;
}
return index;
}
int findBig(int array[], int size)
{
int index = 0;
for (int i = 0; i < size; i++)
{
index = findBiggest(array, size, i);
//cout << index << endl;
}
return index;
}
int main()
{
int array[50];
srand(time(NULL));
for (int i = 0; i < 50; i++)
array[i] = rand() % 100;
cout << "The smallest digit is " << findSmall(array, 50) << endl;
cout << "The biggest digit is " << findBig(array, 50);
cin.get();
}
我已经编辑了上面的代码,但是我不断从 findSmall 和 findBig 函数返回 49。
【问题讨论】:
-
我认为
findBig和findSmall没有任何用处,除了观察关于检查不同范围的数组值的不同结果。另外,您确定要那些返回 0 吗? -
“未定义”是什么意思?除了
srand中的类型转换警告外,请调用所有内容 -
为什么
findBig做findBiggest50 次?我不明白你为什么不只做一次findBiggest并且有你的答案。 -
有很多更好的方法可以做到这一点,你应该看看
std::max_element和std::min_element、std::sort和std::set。