gpt4 book ai didi

计算数组中的最小元素

转载 作者:行者123 更新时间:2023-11-30 20:23:55 25 4
gpt4 key购买 nike

我编写了一个小程序来确定数组中的最小元素 a[] 。当我调试时,程序最初似乎工作正常,但随后 min() 中的 for 循环尽管数组大小为 10,函数仍会在两步后停止执行。

最终输出是 23,而它应该是 3。

代码是sizeof(a)/sizeof(int)不正确?我在另一个article上找到了它在 stackoverflow 上。

#include <stdio.h>
#include <limits.h>

int min(int[]);

int main(){
int a[]={100,23,3,4,5,6,7,8,9,10};
printf("%d", min(a));
return 0;
}

int min(int a[]){
int min = INT_MAX, i;
for(i = 0; i < sizeof(a)/sizeof(a[0]); i++){
if((i>=0) && (a[i]< min))
min = a[i];
}
return min;
}

最佳答案

在函数内部,a 是一个指向整数数组的指针,因此 sizeof(a) 返回指针的大小,通常为 4 或 8 字节,具体取决于系统。也就是说,不可能在函数内使用 sizeof(a)/sizeof(a[0]) 来计算 C 数组中的元素数量。您需要将元素数量显式作为参数传递给函数。

int min(int a[], int n) {
...
for (i = 0; i < n; i++) {...}
...
}

printf("%d", min(a, sizeof(a)/sizeof(a[0])));

关于计算数组中的最小元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35176564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com