【发布时间】:2022-01-15 18:04:38
【问题描述】:
我有一个函数,它应该使用 struct 在数组中找到最小值和最大值。 但不知何故,该函数为 min 和 max 变量分配了错误的值。有人可以解释我哪里有错误吗?非常感谢。附言在我的作业中,函数不需要获取数组的第一个元素
min_max_t min_max(unsigned int *array, int size)
{
min_max_t flag;
flag.min = array[1];
flag.max = array[1];
printf("Flag.min: %d | ", flag.min);
printf("Flag.max: %d\n", flag.max);
for (int i = 1; i < size; i++)
{
printf("i = %d - [A:%d - Min:%d - Max:%d]\n", i, array[i], flag.min, flag.max);
if(array[i] > flag.max)
{
flag.max = array[i];
}
else if (array[i] < flag.min)
{
flag.min = array[i];
}
printf("i = %d - [A:%d - Min:%d - Max:%d]\n\n", i, array[i], flag.min, flag.max);
}
return flag;
}
【问题讨论】:
-
对于初学者,您将忽略数组的第一个元素。
-
在 C 中,数组中第一个元素的索引为零。所以开始 i=0。
-
你的数组是无符号整数,但你告诉
printf()它们是有符号整数,看起来你的输入有负数? -
我的作业说,数组的第一个元素(数组[0])用于表示项目后期的另一个值。所以我必须在其中找到 min 和 max 的数组是从 array[1] 到 array[size-1] 的数组。
-
问题似乎是您将
int数组传递给了将其作为unsigned int数组处理的函数。因此-1的值被转换为大的正值(即可用的最大无符号值)。