【发布时间】:2013-02-02 04:26:45
【问题描述】:
我正在尝试编写一个返回数组最小值的函数。到目前为止,我有这个,但它返回的只是 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;
}
【问题讨论】:
-
在调试器中单步执行程序并观察每一步发生的情况会很有启发意义。我认为这样你会比有人指出所有的错误学到更多。
-
想想你在每一步都比较了哪些值。这些是您要比较的值吗?我建议使用调试器,或者只是尝试通过一张纸来思考整个代码周期,逐个操作。
-
另外,您应该将最小值初始化为已知值。
-
提示:您正在更新
index错误。此外,您实际上根本不需要index变量。 -
@Revoo 如果代码不长于此,那么笔和纸比调试器要好。只需逐行阅读并写下所有变量的值。首先使用较小的阵列。以
{1}开头。
标签: c++ arrays function codeblocks minimum