我正在尝试编写一个返回数组最小值的函数。到目前为止,我有这个,但它返回的只是0.
我没看到它会如何返回0,因为我使用for循环遍历数组。也许它不会像我认为的那样循环遍历数组值。任何人都可以详细说明这段代码中的逻辑和谬误吗?
#include <iostream>
using namespace std;
int newArray[9] = {4,5,9,3,6,2,1,7,8};
int minArray()
{
int index = 1;
int minimum;
for (int i = 0; i < 9; i++)
{
if (newArray[i] > newArray[index])
{
minimum = newArray[index];
}
index++;
}
return minimum;
}
int main()
{
cout << "original array:\n ";
for (int i = 0; i < 9; i++)
{
cout << newArray[i] << ", ";
}
cout << "minimum value of array: ";
cout << minArray();
return 0;
}
答案 0 :(得分:1)
一个好主意可能是使用数组中的元素初始化minimum。 所以:
minimum = newArray[0]
在你的循环中(伪代码假设你不想要答案):
if: newArray[pos] < minimum
minimum = newArray[pos];
答案 1 :(得分:0)
minimum
变量应该最初分配给数组中的值,然后将数组中的每个元素与minimum
进行比较。如果小于,请为minimum
分配该值:
int minArray()
{
int minimum = newArray[0];
int index = 0;
for (int i = 0; i < 9; i++)
{
if (newArray[i] < minimum)
{
minimum = newArray[i];
}
index++;
}
return minimum;
}
答案 2 :(得分:0)
我会做这样的事情:
#include <iostream>
int minArray(int a[], int size) {
if (size <= 0) return 0; //
int m = a[0];
for (int i = 1; i < size; ++i) {
if (a[i] < m) m = a[i];
}
return m;
}
int main() {
int a[] = { 4, 3, 6, 2 };
std::cout << minArray(a, 4);
return 0;
}
答案 3 :(得分:0)
您应该使用某个已知值或最大整数值初始化minimum
。
int minArray()
{
int minimum = newArray[0];
for (int i = 1; i < 9; i++)
{
if (minimum > newArray[i])
{
minimum = newArray[i];
}
}
return minimum;
}
你错误地使用index
(实际上根本不需要它)。可以使用index
代替minimum
的示例:
int minArray()
{
int index = 0;
for (int i = 1; i < 9; i++)
{
if (newArray[index] > newArray[i])
{
index = i;
}
}
return newArray[index];
}
两个示例都应该可以正常工作,但我建议先使用。