获取数组中的最小值
obtaining the minimum value in an array
#include <stdio.h>
int min=0;
int find_min_index(int numbers[], int length)
{
for(int a=0; a<length; a++)
{
if(numbers[a]<min)
min=numbers[a];
}
int main( int argc, char* argv[])
{
int data_array_1 = ( 1, 3, 5, 7, 9, 11};
int data_array_2 = ( 2, -4, 6, -8, 10, -12, 14, -16};
int data_array_3 = ( 6, 4, 1, 4, 5, 3, 2};
printf("Min's index array1 is: %d\n", find_min_index(array1, 6));
printf("Min's index array2 is: %d\n", find_min_index(array2, 9));
printf("Min's index array3 is: %d\n", find_min_index(array3, 7));
return 0;
}
我得到的输出是:
Min 的索引 array1 是:6
Min 的索引 array2 是:9
Min 的索引 array3 是:7
而我期望的输出是:
Min 的索引 array1 是:1
Min 的索引 array2 是:-16
Min 的索引 array3 是:1
希望你们帮我得到合适的结果。
1) 您的 find_min_index 需要 return 分钟,目前没有 return 值。
2) 如果只有 > 0 个值,将 min 设置为 0 不会给您正确的结果。
3) 你的 find_min_index 函数没有右括号,所以不应该编译
这是解决方案 -
#include <stdio.h>
int find_min_index(int numbers[], int length)
{
int a; // bring a and min inside function
int min=numbers[0]; // initialize min with array's 1st element
for(a=1; a<length; a++)
{
if(numbers[a]<min)
min=numbers[a];
}
return min; //return min from function
}
int main( int argc, char* argv[])
{
int data_array_1[]={ 1, 3, 5, 7, 9, 11}; //declare and initialize array
int data_array_2[]={ 2, -4, 6, -8, 10, -12, 14, -16};
int data_array_3[]={ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ,0};
printf("Min's index array1 is: %d\n", find_min_index(data_array_1, 6)); // calling function in printf
printf("Min's index array2 is: %d\n", find_min_index(data_array_2, 8));
printf("Min's index array3 is: %d\n", find_min_index(data_array_3, 11));
// printf("Min's index array3 is: %d\n", find_min_index(data_array_3, 10)); // in case you need this output as 1
return 0;
}
注意- 不要用 0
初始化 min
作为数组 +ve
没有 0
的元素不会给出正确的输出。
在你的 for 循环开始之前初始化 min=0;
它可以解决你的问题。
我不知道你粘贴的代码是如何编译的(你没有传递正确的数组,你没有以正确的方式声明数组 - 你应该指定 数组的大小),但我成功了。主要问题是您已将 min
初始化为 0。您应该将其初始化为传递给函数的数组的第一个元素,因为数组中的元素可能为负数(考虑:{-1,1,2,3}
)。
您还传递了 9
而不是 8
作为数组的长度:
printf("Min's index array2 is: %d\n", find_min_index(data_array_2, 9));
(data_array_3
的函数调用也是如此)。
在C中最好声明以数组为指针类型的函数,即:int find_min_index(int* numbers, int length)
.
此外,给定输入数据的正确输出将是:
Min's index array1 is: 1
Min's index array2 is: -16
Min's index array3 is: 0
这是你函数的固定版本:
#include <stdio.h>
int find_min_index(int* numbers, int length) {
int min = numbers[0];
for (int a = 1; a < length; a++) {
if (numbers[a] < min) min = numbers[a];
}
return min;
}
int main(int argc, char* argv[]) {
int data_array_1[6] = {1, 3, 5, 7, 9, 11};
int data_array_2[8] = {2, -4, 6, -8, 10, -12, 14, -16};
int data_array_3[11] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
printf("Min's index array1 is: %d\n", find_min_index(data_array_1, 6));
printf("Min's index array2 is: %d\n", find_min_index(data_array_2, 9));
printf("Min's index array3 is: %d\n", find_min_index(data_array_3, 7));
return 0;
}
#include <stdio.h>
int min=0;
int find_min_index(int numbers[], int length)
{
for(int a=0; a<length; a++)
{
if(numbers[a]<min)
min=numbers[a];
}
int main( int argc, char* argv[])
{
int data_array_1 = ( 1, 3, 5, 7, 9, 11};
int data_array_2 = ( 2, -4, 6, -8, 10, -12, 14, -16};
int data_array_3 = ( 6, 4, 1, 4, 5, 3, 2};
printf("Min's index array1 is: %d\n", find_min_index(array1, 6));
printf("Min's index array2 is: %d\n", find_min_index(array2, 9));
printf("Min's index array3 is: %d\n", find_min_index(array3, 7));
return 0;
}
我得到的输出是:
Min 的索引 array1 是:6
Min 的索引 array2 是:9
Min 的索引 array3 是:7
而我期望的输出是:
Min 的索引 array1 是:1
Min 的索引 array2 是:-16
Min 的索引 array3 是:1
希望你们帮我得到合适的结果。
1) 您的 find_min_index 需要 return 分钟,目前没有 return 值。
2) 如果只有 > 0 个值,将 min 设置为 0 不会给您正确的结果。
3) 你的 find_min_index 函数没有右括号,所以不应该编译
这是解决方案 -
#include <stdio.h>
int find_min_index(int numbers[], int length)
{
int a; // bring a and min inside function
int min=numbers[0]; // initialize min with array's 1st element
for(a=1; a<length; a++)
{
if(numbers[a]<min)
min=numbers[a];
}
return min; //return min from function
}
int main( int argc, char* argv[])
{
int data_array_1[]={ 1, 3, 5, 7, 9, 11}; //declare and initialize array
int data_array_2[]={ 2, -4, 6, -8, 10, -12, 14, -16};
int data_array_3[]={ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ,0};
printf("Min's index array1 is: %d\n", find_min_index(data_array_1, 6)); // calling function in printf
printf("Min's index array2 is: %d\n", find_min_index(data_array_2, 8));
printf("Min's index array3 is: %d\n", find_min_index(data_array_3, 11));
// printf("Min's index array3 is: %d\n", find_min_index(data_array_3, 10)); // in case you need this output as 1
return 0;
}
注意- 不要用 0
初始化 min
作为数组 +ve
没有 0
的元素不会给出正确的输出。
在你的 for 循环开始之前初始化 min=0;
它可以解决你的问题。
我不知道你粘贴的代码是如何编译的(你没有传递正确的数组,你没有以正确的方式声明数组 - 你应该指定 数组的大小),但我成功了。主要问题是您已将 min
初始化为 0。您应该将其初始化为传递给函数的数组的第一个元素,因为数组中的元素可能为负数(考虑:{-1,1,2,3}
)。
您还传递了 9
而不是 8
作为数组的长度:
printf("Min's index array2 is: %d\n", find_min_index(data_array_2, 9));
(data_array_3
的函数调用也是如此)。
在C中最好声明以数组为指针类型的函数,即:int find_min_index(int* numbers, int length)
.
此外,给定输入数据的正确输出将是:
Min's index array1 is: 1
Min's index array2 is: -16
Min's index array3 is: 0
这是你函数的固定版本:
#include <stdio.h>
int find_min_index(int* numbers, int length) {
int min = numbers[0];
for (int a = 1; a < length; a++) {
if (numbers[a] < min) min = numbers[a];
}
return min;
}
int main(int argc, char* argv[]) {
int data_array_1[6] = {1, 3, 5, 7, 9, 11};
int data_array_2[8] = {2, -4, 6, -8, 10, -12, 14, -16};
int data_array_3[11] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
printf("Min's index array1 is: %d\n", find_min_index(data_array_1, 6));
printf("Min's index array2 is: %d\n", find_min_index(data_array_2, 9));
printf("Min's index array3 is: %d\n", find_min_index(data_array_3, 7));
return 0;
}