C語言 經典例題之一求最大值

2021-08-28 11:34:14 字數 1409 閱讀 8329

本文將介紹乙個在c語言學習過程中非常簡單且非常經典的問題,以及介紹大多數人在寫這個**時經常會跳進去的乙個坑。

求最大值基本每個人都會,所以簡單敘述一下要點:建立乙個陣列以及建立乙個變數max,給變數max賦值然後跟陣列中每個元素一 一進行判斷,如果陣列中的數比max大那麼把這個數賦給max,以此類推;

看起來非常簡單,那麼我們實現一下(**如下):

#include

intmain()

;int max =0;

//定義變數max用來作比較

printf

("請輸入十個整數:\n");

for(i=

0; i<

10; i++

)for

(i=0

; i<

10; i++

)printf

("最大值為%d\n"

,max)

;return0;

}

這個**看起來毫無問題,附上執行結果如下:

結果看起來沒毛病,試一試負數:

bug出來了,為什麼會出現這種情況呢?

**看起來似乎無懈可擊,但是執行結果卻是錯的,回過頭看**,為什麼會給max賦值0呢?這樣是不是就是預設比較變數最大值是0了,那麼輸入負數時就會出現毛病,所以應該給max賦乙個陣列中的值。修改後的**如下:

#include

intmain()

;int max =0;

printf

("請輸入十個整數:\n");

for(i=

0; i<

10; i++

) max = arr[0]

;for

(i=1

; i<

10; i++

)printf

("最大值為%d\n"

,max)

;return0;

}

這樣就可以了,給max賦陣列中第乙個值,然後一 一與陣列中的值進行比較(max可以賦予陣列中任何乙個值),這裡還有乙個優化,因為我們賦的值是第乙個,那麼迴圈就可以從陣列中第二個元素開始,所以for迴圈i從1開始迴圈。結果如下:

這樣就可以處理當輸入的資料為負數的情況了。

本文演示了求陣列中最大值的問題,以及演示了很容易跳進的乙個坑。

ps: 有不當之處希望大家提出批評並指正。

經典例題 元素的最大值和次最大值

方法一 排序後查詢,直接呼叫sort 函式 特別注意sort 函式的用法 include using namespace std intmain sort a 1 a n cout 排序後輸出最後兩個元素即可。方法二 迴圈遍歷比較陣列元素 將陣列元素前兩個看作最大和次最大值,然後從第三個開始迴圈比較...

C語言 求10 個整數中最大值

求10個整數中的最大值。先建立乙個能夠儲存10個資料的陣列,輸入資料,將第乙個值賦給變數max,然後依次將陣列中的每乙個數與max比較,當max小於對應的數時,則將對應的數賦給max,10個值全部執行完畢之後,max中便是這是個值中最大的值,輸出max即可。define crt secure no ...

C語言 求自定型別元素的最大值

求自定型別元素的最大值 2019 9 27 include define maxn 10 定義乙個符號常量 typedef float elementtype 為float型別定義乙個別名 elementtype 返回乙個elementtype型別,也就是返回乙個float型別 函式宣告,函式形參裡...