我是一个CSS的学生,教授给了我一个练习,但是我不知道怎么解决这个问题,一个特定的n想要在printf中访问,但是数组中给定的元素低于要求的n。
这是我写的代码,但在这个特殊的测试中,它没有给我正确的解决方案。有什么提示吗?
#include <stdio.h>
int max(int arr[], int n) {
int numMax = 0, indexMax = 0;
for (int i = 0; i <= n; i++) {
if (arr[i] >= numMax) {
numMax = arr[i];
indexMax = i;
}
}
return indexMax;
}
int main () {
int arr[5]={-88, -91, -45, -90, -13};
printf("The index of the highest number is: %d\n", max(feld, 5));
// solution: 5
return 1;
}
3条答案
按热度按时间idfiyjo81#
您的数组名为
arr
,而不是feld
。在您的函数中,可以使用数组的第一个值初始化
numMax
,然后循环通过它来测试以下内容。1qczuiv02#
使用:
for (int i = 0; i <= n; i++)
,OP程序会跳出数组的边界(从零开始的索引对于初学者来说很棘手)。数组元素不会移动。
只需拾取最后一个元素,如果在向第0个元素扫描期间发现更高的值,则更新该拾取。
需要跟踪的变量越少总是一个优势。
函数返回索引,而不是值。
编辑:
让我们访问
main()
来稍微改进一下。现在,由于它使用
size_t
(更适合于非负值,如数组中的元素数或文件中的字节数),我们也应该改进该函数:注意:
size_t
是一个unsigned
数据类型,如果递减到零以下,它将是underflow
。请小心处理,以避免无限循环。n3ipq98p3#
int arr[6]
并将5
作为参数传递给max应该可以完成此工作。