#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的索引数组3是:7
虽然我期望的输出是:
Min的索引array1是:1
Min的索引array2是:-16
Min的索引数组3是:1
cay,你们帮我找到合适的结果。
答案 0 :(得分:2)
1)你需要在find_min_index中返回min,目前没有返回值。
2)如果只有&gt;将min设置为0将不会给出正确的结果0值。
3)你的find_min_index函数没有一个关闭括号,所以不应该编译
答案 1 :(得分:1)
这是解决方案 -
#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;
}
注意 - 请勿使用min
初始化0
作为包含+ve
元素的数组,而0
元素不会提供正确的输出。< / p>
答案 2 :(得分: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;
}
答案 3 :(得分:-1)
在你的for循环开始之前,只需初始化min=0;
它可以解决你的问题。