2017-05-02 88 views
1

我沒有得到正確的值,我錯過了什麼?我在其他PC上有類似的代碼,它似乎工作。一直在研究它幾個小時的分析,一切看起來不錯,據我所知,但我錯過了一些肯定。 我得到最大數量= 22,最大POS = 0,分鐘數= 22,最小位置= 24函數找到最低位/最高位和值

#include <stdio.h> 

int findMaxPos(int *numbers, int length); 
int findMinPos(int *numbers, int length); 

int findMax(int *numbers, int length); 
int findMin(int *numbers, int length); 

int main() 
{ 
    int arr[] = { 100, 50, 20, 35 , 25, 22}; 

    printf("Max number = %d\nMax pos = %d\nMin number = %d\nMin position = %d", findMax(arr, 6), findMaxPos(arr, 6), findMin(arr, 6), findMinPos(arr, 6)); 
    getchar(); 

    return 0; 
} 

int findMaxPos(int *numbers, int length) { 
    int maxPos = 0; 

    for (int i = 0; i < length; i++) 
    { 
     if (numbers[i] > numbers[maxPos]) 
      maxPos = i; 
    } 
    return maxPos; 
} 

int findMinPos(int *numbers, int length) 
{ 
    int minPos = 0; 

    for (int i = 0; i < length; i++) 
    { 
     if (numbers[i] < numbers[minPos]) 
      minPos = i; 
    } 

    return minPos; 
} 

int findMax(int *numbers, int length) { 

    int maxNr = numbers[0]; 

    for (int i = 0; i < length; i++) 
    { 
     if (numbers[i] > maxNr); 
     maxNr = numbers[i]; 
    } 

    return maxNr; 
} 

int findMin(int *numbers, int length) 
{ 
    int minNr = numbers[0]; 

    for (int i = 0; i < length; i++) 
    { 
     if (numbers[i] < minNr); 
     minNr = numbers[i]; 
    } 

    return minNr; 
} 
+0

看看那個額外的分號:'if(numbers [i]

回答

3

你有一個額外;findMaxiffindMin後:

if (numbers[i] > maxNr); 

刪除;

if (numbers[i] > maxNr) 
+0

最大位置得到0和最小位置2 – Cutik

+0

@Cutik:你的'findMaxPos'和'findMinPos'函數沒有相同的問題(沒有額外的';'),所以它們返回正確的(預期的)結果:最大的數字在陣列(100)中位於位置0,最小數量(20)位於位置2。 –

1

陣列位置的[0],所以你的最高位置開始和閔位置是正確的:

Numbers[0] = 100

Numbers[2] = 20

爲最大數,最小數,由桑德德Dycker說,你只需要刪除多餘的;末您的if語句中的findMaxfindMin函數。

相關問題