求一陣列中的最大值與最小值(簡析指標與陣列)

2021-10-01 10:01:49 字數 1648 閱讀 3024

首先,需要建立乙個陣列

int n;

printf

("請輸入陣列長度:\n");

scanf

("%d"

,&n)

;int a[n]

;printf

("請輸入陣列元素:\n");

for(

int i =

0; i < n; i++

)

其中要**注意一件事情,定義陣列不能**寫成

int n,a[n]

;//這裡是錯誤的定義

printf

("請輸入陣列長度:\n");

scanf

("%d"

,&n)

;printf

("請輸入陣列元素:\n");

for(

int i =

0; i < n; i++

)

為什麼?

因為這樣定義陣列a申請的空間是n,但是此時n未輸入,一般預設為0,意味著陣列a申請了0個空間,這樣即使在執行時發現可以執行甚至可以建立陣列,但是你的陣列占用的空間是非法的,如果別的陣列申請空間,是可以占用你存資料的位置的,所以不要這樣定義

在你建立完了之後,可以遍歷輸出看看你建立的是否正確

printf

("您輸入的陣列為:\n");

for(

int i =

0; i < n; i++

)

第一種方法:

int

max(

int* a,

int n)

//最大值

}return a[0]

;}intmin

(int

* a,

int n)

//最小值

}return a[0]

;}

第二種方法

void

max_min

(int a,

int n,

int* pmax,

int* pmin)

}

利用指標指向最大值和最小值。

在這裡說一下指標與陣列

1)在函式引數表中的陣列實際上是指標

2)以陣列為引數的以下幾個函式原型是等價的

1. int sum(int *a,int n);

2. int sum(int *,int );

3. int sum(int a,int n);

4. int sum(int ,int );

3)陣列變數是特殊的指標

陣列本身表達位址,所以int a[10]; int *p = a無需用&符取位址,但是陣列單元表達的是變數,需要用&取位址a ==a[0];

運算子可以對陣列做,也可以對指標做

*運算子可以對指標做,也可以對陣列做

p[0]

<=

=>a[0]

*a =

20;

陣列變數是const 的指標,不能被賦值。

分治演算法(一) 》陣列中的最小值最大值

問題 程式設計之美 page166.尋找陣列中的最大值,最小值。public class minmax int result find array system.out.println min is result 0 max is result 1 result merge array,0,arra...

python陣列求最大值最小值

剛剛面試被問到不用max函式怎麼求最大值,記錄一下 a 1 3,5 7,4 4,3 1,0 第一種方法 我們可以直接排序,取最後乙個 a.sort reverse false print a 1 第二種 我們定義第乙個元素 然後for迴圈比較 max num a 0 for i in range l...

無序陣列中求最大值最小值

要求比較次數小於2n。最直接的做法,比較次數為2n include using namespace std int main cout min val max val endl return 0 如果要減少比較次數,應該怎麼做呢?當某個元素比較大元素大的時候,就不必再與較小元素比較了 int mai...