本文將介紹乙個在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型別 函式宣告,函式形參裡...