#include <stdio.h> #include <limits.h> int find_max(int arr[]) { int max = INT_MIN; int i; for(i =0;i<=sizeof(arr)/sizeof(int);i++) { if(arr[i]>max) { max = arr[i]; } } return max; } int main(int argc, char const *argv[]) { int arr[]={1,2,3,4,5}; int max = find_max(arr); printf("MAX:%d",max); return 0; }修改代码
时间: 2024-03-12 21:43:54 浏览: 132
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
这段代码的问题在于sizeof(arr)/sizeof(int)这部分的计算方式是错误的,因为在函数中传递的数组参数arr在编译时会转换为指针类型,因此sizeof(arr)将返回指针类型的字节数,而不是数组的元素个数。因此,我们需要在函数中传递数组的大小,或者使用一个标记来表示数组的结尾。
以下是修改后的代码:
```
#include <stdio.h>
#include <limits.h>
int find_max(int arr[], int size) {
int max = INT_MIN;
int i;
for(i = 0; i < size; i++) {
if(arr[i] > max) {
max = arr[i];
}
}
return max;
}
int main(int argc, char const *argv[]) {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(int);
int max = find_max(arr, size);
printf("MAX:%d", max);
return 0;
}
```
在这个修改后的代码中,我们在调用find_max函数时传递了数组的大小,这样就可以在函数中正确地遍历整个数组。
阅读全文