山不在高,有仙則名。水不在深,有龍則靈。 ----CSDN 時時三省
調用有參函數時,需要提供實參。例如sin ( x ),sqrt ( 2,0 ),max ( a,b )等。實參可以是常量、變量或表達式。數組元素的作用與變量相當,一般來說,凡是變量可以出現的地方,都可以用數組元素代替。因此,數組元素也可以用作函數實參,其用法與變量相同,向形參傳遞數組元素的值。此外,數組名也可以作實參和形參,傳遞的是數組第一個元素的地址。
數組元素作為函數實參
數組元素可以用作函數實參,但是不能用作形參。因為形參是在函數被調用時臨時分配存儲單元的,不可能為一個數組元素單獨分配存儲單元(數組是一個整體,在內存中占連續的一段存儲單元)。在用數組元素作函數實參時,把實參的值傳給形參,是“值傳遞”方式。數據傳遞的方向是從實參傳到形參,單向傳遞。
例題:
輸入10個數,要求輸出其中值最大的元素和該數是第幾個數。
解題思路:
可以定義一個數組a,長度為10,用來存放10個數。設計一個函數max,用來求兩個數中的大者。在主函數中定義一個變量m,m的初值為a [ 0 ],每次調用max函數后的返回值存放在m中。用“打擂臺”算法,依次將數組元素a [ 1 ] ~ a [ 9 ]與m比較,最后得到的m值就是10個數中的最大者。
編寫程序:
運行結果:?
程序分析:?
從鍵盤輸入10個數給a[0]?~ a [9]。變量m用來存放當前已比較過的各數中的最大者。開始時設m的值為a[0]。然后將m與a [ 1 ]比,如果a [ 1 ]大于m,就以a [ 1 ]的值(此時也就是max(m,a [ 1 ])的值)取代m的原值。下一次以m的新值與a [ 2 ]比較,max ( m,a [ 2 ] )的值是a [ o ],a [ 1 ],a [ 2 ]中最大者,其余類推。經過9輪循環的比較,m最后的值就是10個數的最大數。
請注意分析怎樣得到最大數是10個數中第幾個數。當每次出現以max ( m,a [ i ] )的值取代m的原值時,就把i的值保存在變量n中。n最后的值就是最大數的序號(注意序號從0開始),如果要輸出“最大數是10個數中第幾個數”,應為n+1。例如n =6時表示數組元素a6是最大數,由于序號從0開始,因此它是10數中第7個數,故應輸出的是n+1。
當然,本題可以不用max函數求兩個數中的大數,而在主函數中直接用if ( m > a[i]?)來判斷和處理。