如何在数组中查找元素的位置(C编程)

时间:2018-11-03 22:40:12

标签: c

我有一个函数,要求用户将10个整数输入到数组中,然后找到数组的最大值。

int largestPos(int array[], int size, int index) {

int k, maxVal = 0;

printf("Enter a starting index: ");
scanf("%d", &index);

for (k = index; k < size; k++){
    if (maxVal < array[k]){
        maxVal = array[k];
    }
}
printf("The maximum value is %d at position %d \n", maxVal, array[maxVal]);

return 0;

}

最大值计算正确。但是,当我尝试找到最大值的位置时,我得到了一个疯狂的数字。我找到最大值位置的方式有什么问题?

3 个答案:

答案 0 :(得分:2)

    bPromise = a.relation('b').query().find();
    cPromise = a.relation('c').query().find();
    combinedPromise = Promise.all([bPromise, cPromise]);
    combinedPromise.then(results => {
        // fetch c promise with calling get method of parse API...
        // fetch b non relation data with calling to get method of parse API
        // now a variable named filledObject is filled with all the data 
           from c and b except of the d relation data, right after i insert 
           it into the state
        b.relation('d').query.find().then(results => {
           // how i can insert fetched data from results into filledObject?
        }
   }

答案 1 :(得分:1)

仅当所有整数均大于零时,以下内容才会找到最大值。如果它们都是负整数,则此处的最大值将为0。

int array[5] = {-234, -133, -581, -8, -41};

int maxVal = 0;

for(i = 0; i < size; ++i) {
    if(array[i] > maxVal) {
        maxVal = array[i];
    }
}

相反,您想使用数组中的第一个元素初始化maxVal,然后将其他每个元素与其进行比较(跳过for循环中的第一个元素,因此您无需将maxVal与自身进行比较)。这将使索引3的最大值为-8。

int array[5] = {-234, -133, -581, -8, -41};

// initialize maxVal to first element inside the array
int maxVal = array[0];
int pos = 0;

for(i = 1; i < size; ++i) {
    if(array[i] > maxVal) {
        maxVal = array[i];
        // Find the index of the max value
        pos = i;
    }
}

答案 2 :(得分:-1)

假设您有以下数组:{100,99,98,97,96,95,94,93,92,91,90},最大值为100。您的代码尝试打印array [maxValue]从而将数组[100]。

也许您不应该将值保存到maxValue中,而应该将其保存到正确的位置