計算機函數
計算機邏輯基礎
計算機的函數,是一個固定的一個程序段,或稱其為一個子程序,它在可以實現固定運算功能的同時,還帶有一個入口和一個出口,所謂的入口,就是函數所帶的各個參數,我們可以通過這個入口,把函數的參數值代入子程序,供計算機處理;所謂出口,就是指函數的函數值,在計算機求得之後,由此口帶回給調用它的程序。
目錄
如sin(30)=0.5,這裡的30就是函數的參數值,它將由入口傳給計算機,供計算機處理,而0.5就是函數值,它將由出口返回給調用這個函數的程序。另外,我們數學里的函數是固定的那些,而計算機中的函數,可以根據其運算功能,由我們自己去定義,只要是運算功能是固定的,我們就可以把它定義成一個函數,這樣可以避免相同的程序段在程序中重複出現,在需要它時,只需要調用相應的函數就行了。這樣不僅可以使我們編寫的程序精簡,而且可以使我們的程序更富有可讀性。
計算機函數
一個較大的程序一般應分為若干個程序塊,每一個模塊用來實現一個特定的功能。所有的高級語言中都有子程序這個概念,用子程序實現模塊的功能。在C語言中,子程序的作用是由一個主函數和若干個函數構成。由主函數調用其他函數,其他函數也可以互相調用。同一個函數可以被一個或多個函數調用任意多次。
在程序設計中,常將一些常用的功能模塊編寫成函數,放在函數庫中供公共選用。要善於利用函數,以減少重複編寫程序段的工作量。
許多程序設計語言中,可以將一段經常需要使用的代碼封裝起來,在需要使用時可以直接調用,所以,函數也可以說是許多代碼的集合,這就是程序中的函數。比如在C語言中:
就是一段比較兩數大小的函數,函數有參數與返回值。C++程序設計中的函數可以分為兩類:帶參數的函數和不帶參數的函數。這兩種參數的聲明、定義也不一樣。
帶有(一個)參數的函數的聲明:
類型名標示符+函數名+(類型標示符+參數)
{
//程序代碼
}
沒有返回值且不帶參數的函數的聲明:
void+函數名()//無類型+函數名
{
//程序代碼
}
花括弧內為函數體。
如果沒有返回值類型名為"void",整數類型int類型返回值為整數類型int,以此類推……
類型名有:voidintlongfloatint*long*float*……
C++中函數的調用:函數必須聲明后才可以被調用。調用格式為:函數名(實參)
調用時函數名后的小括弧中的實參必須和聲明函數時的函數括弧中的形參個數相同。
有返回值的函數可以進行計算,也可以做為右值進行賦值。
RANK函數是Excel計算序數的主要工具,它的語法為:RANK(number,ref,order),其中number為參與計算的數字或含有數字的單元格,ref是對參與計算的數字單元格區域的絕對引用,order是用來說明排序方式的數字(如果order為零排列,即2、1和3。需要注意的是:相同數值用RANK函數計算得到的序數(名次)相同,但會導致後續數字的序數空缺。假如上例中F2單元格存放的數值與F3相同,則按本法計算出的排名分別是3、3和1(降序時)。
COUNTIF函數可以統計某一區域中符合條件的單元格數目,它的語法為COUNTIF(range,criteria)。其中range為參與統計的單元格區域,criteria是以數字、表達式或文本形式定義的條件。其中數字可以直接寫入,表達式和文本必須加引號。
仍以上面的為例,F2單元格內輸入的公式為“=COUNTIF($E$2:$E$4,”>“&E2)+1”。計算各車間產值排名的方法同上,結果也完全相同,2、1和3。
此公式的計算過程是這樣的:首先根據E2單元格內的數值,在連接符&的作用下產生一個邏輯表達式,即“>176。7”、“>167。3”等。COUNTIF函數計算出引用區域內符合條件的單元格數量,該結果加一即可得到該數值的名次。很顯然,利用上述方法得到的是降序排列的名次,對重複數據計算得到的結果與RANK函數相同。
Excel自身帶有排序功能,可使數據以降序或升序方式重新排列。如果將它與IF函數結合,可以計算出沒有空缺的排名。以上例中E2、E3、E4單元格的產值排序為例,具體做法是:選中E2單元格,根據排序需要,單擊Excel工具欄中的“降序排列”。
C語言函數
main(中文:主函數)
max(中文:求“最大數”的函數)
scanf(中文全稱:“格式輸入”函數)
printf(中文全稱:“格式輸出”函數)
gets(中文全稱:“標準輸入流”函數)
C語言庫函數
C語言為了方便用戶編寫程序,為用戶開發了大量的庫函數,其定義在.h文件中,用戶可以調用這些函數實現強大的功能。所以對於用戶來說,掌握這些函數的用法是提高編程水平的關鍵。
函數名稱:ABS
主要功能:求出相應數字的絕對值。
使用格式:ABS(number)
參數說明:number代表需要求絕對值的數值或引用的單元格。
應用舉例:如果在B2單元格中輸入公式:=ABS(A2),則在A2單元格中無論輸入正數(如100)還是負數(如-100),B2中均顯示出正數(如100)。
特別提醒:如果number參數不是數值,而是一些字元(如A等),則B2中返回錯誤值“#VALUE!”。
函數名稱:AND
主要功能:返回邏輯值:如果所有參數值均為邏輯“真(TRUE)”,則返回邏輯“真(TRUE)”,反之返回邏輯“假(FALSE)”。
使用格式:AND(logical1,logical2,...)
參數說明:Logical1,Logical2,Logical3……:表示待測試的條件值或表達式,最多這30個。
應用舉例:在C5單元格輸入公式:=AND(A5>=60,B5>=60),確認。如果C5中返回TRUE,說明A5和B5中的數值均大於等於60,如果返回FALSE,說明A5和B5中的數值至少有一個小於60。
特別提醒:如果指定的邏輯條件參數中包含非邏輯值時,則函數返回錯誤值“#VALUE!”或“#NAME”。
函數名稱:AVERAGE
主要功能:求出所有參數的算術平均值。
使用格式:AVERAGE(number1,number2,……)
參數說明:number1,number2,……:需要求平均值的數值或引用單元格(區域),參數不超過30個。
應用舉例:在B8單元格中輸入公式:=AVERAGE(B7:D7,F7:H7,7,8),確認后,即可求出B7至D7區域、F7至H7區域中的數值和7、8的平均值。
特別提醒:如果引用區域中包含“0”值單元格,則計算在內;如果引用區域中包含空白或字元單元格,則不計算在內。
函數名稱:COLUMN
主要功能:顯示所引用單元格的列標號值。
使用格式:COLUMN(reference)
參數說明:reference為引用的單元格。
應用舉例:在C11單元格中輸入公式:=COLUMN(B11),確認后顯示為2(即B列)。
特別提醒:如果在B11單元格中輸入公式:=COLUMN(),也顯示出2;與之相對應的還有一個返回行標號值的函數——ROW(reference)。
函數名稱:CONCATENATE
主要功能:將多個字元文本或單元格中的數據連接在一起,顯示在一個單元格中。
使用格式:CONCATENATE(Text1,Text……)
參數說明:Text1、Text2……為需要連接的字元文本或引用的單元格。
應用舉例:在C14單元格中輸入公式:=CONCATENATE(A14,"@",B14,".com"),確認后,即可將A14單元格中字元、@、B14單元格中的字元和.com連接成一個整體,顯示在C14單元格中。
特別提醒:如果參數不是引用的單元格,且為文本格式的,請給參數加上英文狀態下的雙引號,如果將上述公式改為:=A14&"@"&B14&".com",也能達到相同的目的。
函數名稱:COUNTIF
主要功能:統計某個單元格區域中符合指定條件的單元格數目。
使用格式:COUNTIF(Range,Criteria)
參數說明:Range代表要統計的單元格區域;Criteria表示指定的條件表達式。
應用舉例:在C17單元格中輸入公式:=COUNTIF(B1:B13,">=80"),確認后,即可統計出B1至B13單元格區域中,數值大於等於80的單元格數目。
特別提醒:允許引用的單元格區域中有空白單元格出現。
函數名稱:DATE
主要功能:給出指定數值的日期。
使用格式:DATE(year,month,day)
參數說明:year為指定的年份數值(小於9999);month為指定的月份數值(可以大於12);day為指定的天數。
應用舉例:在C20單元格中輸入公式:=DATE(2003,13,35),確認后,顯示出2004-2-4。
特別提醒:由於上述公式中,月份為13,多了一個月,順延至2004年1月;天數為35,比2004年1月的實際天數又多了4天,故又順延至2004年2月4日。
主要功能:計算返回兩個日期參數的差值。
使用格式:=DATEDIF(date1,date2,"y")、=DATEDIF(date1,date2,"m")、=DATEDIF(date1,date2,"d")
參數說明:date1代表前面一個日期,date2代表後面一個日期;y(m、d)要求返回兩個日期相差的年(月、天)數。
應用舉例:在C23單元格中輸入公式:=DATEDIF(A23,TODAY(),"y"),確認后返回系統當前日期[用TODAY()表示)與A23單元格中日期的差值,並返回相差的年數。
特別提醒:這是Excel中的一個隱藏函數,在函數嚮導中是找不到的,可以直接輸入使用,對於計算年齡、工齡等非常有效。
函數名稱:DAY
主要功能:求出指定日期或引用單元格中的日期的天數。
使用格式:DAY(serial_number)
參數說明:serial_number代表指定的日期或引用的單元格。
應用舉例:輸入公式:=DAY("2003-12-18"),確認后,顯示出18。
特別提醒:如果是給定的日期,請包含在英文雙引號中。
函數名稱:DCOUNT
主要功能:返回資料庫或列表的列中滿足指定條件並且包含數字的單元格數目。
使用格式:DCOUNT(database,field,criteria)
參數說明:Database表示需要統計的單元格區域;Field表示函數所使用的數據列(在第一行必須要有標誌項);Criteria包含條件的單元格區域。
特別提醒:如果將上述公式修改為:=DCOUNT(A1:D11,,F1:G2),也可以達到相同目的。
函數名稱:FREQUENCY
主要功能:以一列垂直數組返回某個區域中數據的頻率分佈。
使用格式:FREQUENCY(data_array,bins_array)
參數說明:Data_array表示用來計算頻率的一組數據或單元格區域;Bins_array表示為前面數組進行分隔一列數值。
特別提醒:上述輸入的是一個數組公式,輸入完成後,需要通過按“Ctrl+Shift+Enter”組合鍵進行確認,確認后公式兩端出現一對大括弧({}),此大括弧不能直接輸入。
函數名稱:IF
主要功能:根據對指定條件的邏輯判斷的真假結果,返回相對應的內容。
使用格式:=IF(Logical,Value_if_true,Value_if_false)
參數說明:Logical代表邏輯判斷表達式;Value_if_true表示當判斷條件為邏輯“真(TRUE)”時的顯示內容,如果忽略返回“TRUE”;Value_if_false表示當判斷條件為邏輯“假(FALSE)”時的顯示內容,如果忽略返回“FALSE”。
特別提醒:本文中類似“在C29單元格中輸入公式”中指定的單元格,讀者在使用時,並不需要受其約束,此處只是配合本文所附的實例需要而給出的相應單元格。
函數名稱:INDEX
主要功能:返回列表或數組中的元素值,此元素由行序號和列序號的索引值進行確定。
使用格式:INDEX(array,row_num,column_num)
參數說明:Array代表單元格區域或數組常量;Row_num表示指定的行序號(如果省略row_num,則必須有column_num);Column_num表示指定的列序號(如果省略column_num,則必須有row_num)。
特別提醒:此處的行序號參數(row_num)和列序號參數(column_num)是相對於所引用的單元格區域而言的,不是Excel工作表中的行或列序號。
函數名稱:INT
主要功能:將數值向下取整為最接近的整數。
使用格式:INT(number)
參數說明:number表示需要取整的數值或包含數值的引用單元格。
應用舉例:輸入公式:=INT(18.89),確認后顯示出18。
特別提醒:在取整時,不進行四捨五入;如果輸入的公式為=INT(-18.89),則返回結果為-19。
函數名稱:ISERROR
主要功能:用於測試函數式返回的數值是否有錯。如果有錯,該函數返回TRUE,反之返回FALSE。
使用格式:ISERROR(value)
參數說明:Value表示需要測試的值或表達式。
應用舉例:輸入公式:=ISERROR(A35/B35),確認以後,如果B35單元格為空或“0”,則A35/B35出現錯誤,此時前述函數返回TRUE結果,反之返回FALSE。
特別提醒:此函數通常與IF函數配套使用,如果將上述公式修改為:=IF(ISERROR(A35/B35),"",A35/B35),如果B35為空或“0”,則相應的單元格顯示為空,反之顯示A35/B35的結果。
函數名稱:LEFT
主要功能:從一個文本字元串的第一個字元開始,截取指定數目的字元。
使用格式:LEFT(text,num_chars)
參數說明:text代表要截字元的字元串;num_chars代表給定的截取數目。
應用舉例:假定A38單元格中保存了“我喜歡天極網”的字元串,我們在C38單元格中輸入公式:=LEFT(A38,3),確認后即顯示出“我喜歡”的字元。
特別提醒:此函數名的英文意思為“左”,即從左邊截取,Excel很多函數都取其英文的意思。
函數名稱:LEN
主要功能:統計文本字元串中字元數目。
使用格式:LEN(text)
參數說明:text表示要統計的文本字元串。
應用舉例:假定A41單元格中保存了“我今年28歲”的字元串,我們在C40單元格中輸入公式:=LEN(A40),確認后即顯示出統計結果“6”。
特別提醒:LEN要統計時,無論中全形字元,還是半形字元,每個字元均計為“1”;與之相對應的一個函數——LENB,在統計時半形字元計為“1”,全形字元計為“2”。
函數名稱:MATCH
主要功能:返回在指定方式下與指定數值匹配的數組中元素的相應位置。
使用格式:MATCH(lookup_value,lookup_array,match_type)
參數說明:Lookup_value代表需要在數據表中查找的數值;
Lookup_array表示可能包含所要查找的數值的連續單元格區域;
Match_type表示查找方式的值(-1、0或1)。
如果match_type為-1,查找大於或等於lookup_value的最小數值,Lookup_array必須按降序排列;
如果match_type為1,查找小於或等於lookup_value的最大數值,Lookup_array必須按升序排列;
如果match_type為0,查找等於lookup_value的第一個數值,Lookup_array可以按任何順序排列;如果省略match_type,則默認為1。
函數名稱:MAX
主要功能:求出一組數中的最大值。
使用格式:MAX(number1,number2……)
參數說明:number1,number2……代表需要求最大值的數值或引用單元格(區域),參數不超過30個。
應用舉例:輸入公式:=MAX(E44:J44,7,8,9,10),確認后即可顯示出E44至J44單元和區域和數值7,8,9,10中的最大值。
特別提醒:如果參數中有文本或邏輯值,則忽略。
函數名稱:MID
主要功能:從一個文本字元串的指定位置開始,截取指定數目的字元。
使用格式:MID(text,start_num,num_chars)
參數說明:text代表一個文本字元串;start_num表示指定的起始位置;num_chars表示要截取的數目。
應用舉例:假定A47單元格中保存了“我喜歡天極網”的字元串,我們在C47單元格中輸入公式:=MID(A47,4,3),確認后即顯示出“天極網”的字元。
特別提醒:公式中各參數間,要用英文狀態下的逗號“,”隔開。
函數名稱:MIN
主要功能:求出一組數中的最小值。
使用格式:MIN(number1,number2……)
參數說明:number1,number2……代表需要求最小值的數值或引用單元格(區域),參數不超過30個。
應用舉例:輸入公式:=MIN(E44:J44,7,8,9,10),確認后即可顯示出E44至J44單元和區域和數值7,8,9,10中的最小值。
特別提醒:如果參數中有文本或邏輯值,則忽略。
函數名稱:MOD
主要功能:求出兩數相除的餘數。
使用格式:MOD(number,divisor)
參數說明:number代表被除數;divisor代表除數。
應用舉例:輸入公式:=MOD(13,4),確認后顯示出結果“1”。
特別提醒:如果divisor參數為零,則顯示錯誤值“#DIV/0!”;MOD函數可以借用函數INT來表示:上述公式可以修改為:=13-4*INT(13/4)。
函數名稱:MONTH
主要功能:求出指定日期或引用單元格中的日期的月份。
使用格式:MONTH(serial_number)
參數說明:serial_number代表指定的日期或引用的單元格。
應用舉例:輸入公式:=MONTH("2003-12-18"),確認后,顯示出11。
特別提醒:如果是給定的日期,請包含在英文雙引號中;如果將上述公式修改為:=YEAR("2003-12-18"),則返回年份對應的值“2003”。
函數名稱:NOW
主要功能:給出當前系統日期和時間。
使用格式:NOW()
參數說明:該函數不需要參數。
應用舉例:輸入公式:=NOW(),確認后即刻顯示出當前系統日期和時間。如果系統日期和時間發生了改變,只要按一下F9功能鍵,即可讓其隨之改變。
特別提醒:顯示出來的日期和時間格式,可以通過單元格格式進行重新設置。
函數名稱:OR
主要功能:返回邏輯值,僅當所有參數值均為邏輯“假(FALSE)”時返回函數結果邏輯“假(FALSE)”,否則都返回邏輯“真(TRUE)”。
使用格式:OR(logical1,logical2,...)
參數說明:Logical1,Logical2,Logical3……:表示待測試的條件值或表達式,最多這30個。
應用舉例:在C62單元格輸入公式:=OR(A62>=60,B62>=60),確認。如果C62中返回TRUE,說明A62和B62中的數值至少有一個大於或等於60,如果返回FALSE,說明A62和B62中的數值都小於60。
特別提醒:如果指定的邏輯條件參數中包含非邏輯值時,則函數返回錯誤值“#VALUE!”或“#NAME”。
函數名稱:RANK
主要功能:返回某一數值在一列數值中的相對於其他數值的排位。
使用格式:RANK(Number,ref,order)
參數說明:Number代表需要排序的數值;ref代表排序數值所處的單元格區域;order代表排序方式參數(如果為“0”或者忽略,則按降序排名,即數值越大,排名結果數值越小;如果為非“0”值,則按升序排名,即數值越大,排名結果數值越大;)。
應用舉例:如在C2單元格中輸入公式:=RANK(B2,$B$2:$B$31,0),確認后即可得出丁1同學的語文成績在全班成績中的排名結果。
特別提醒:在上述公式中,我們讓Number參數採取了相對引用形式,而讓ref參數採取了絕對引用形式(增加了一個“$”符號),這樣設置后,選中C2單元格,將滑鼠移至該單元格右下角,成細十字線狀時(通常稱之為“填充柄”),按住左鍵向下拖拉,即可將上述公式快速複製到C列下面的單元格中,完成其他同學語文成績的排名統計。
函數名稱:RIGHT
主要功能:從一個文本字元串的最後一個字元開始,截取指定數目的字元。
使用格式:RIGHT(text,num_chars)
參數說明:text代表要截字元的字元串;num_chars代表給定的截取數目。
應用舉例:假定A65單元格中保存了“我喜歡天極網”的字元串,我們在C65單元格中輸入公式:=RIGHT(A65,3),確認后即顯示出“天極網”的字元。
特別提醒:Num_chars參數必須大於或等於0,如果忽略,則默認其為1;如果num_chars參數大於文本長度,則函數返回整個文本。
函數名稱:SUBTOTAL
主要功能:返回列表或資料庫中的分類匯總。
使用格式:SUBTOTAL(function_num,ref1,ref2,...)
參數說明:Function_num為1到11(包含隱藏值)或101到111(忽略隱藏值)之間的數字,用來指定使用什麼函數在列表中進行分類匯總計算(如圖6);ref1,ref2,……代表要進行分類匯總區域或引用,不超過29個。
特別提醒:如果採取自動篩選,無論function_num參數選用什麼類型,SUBTOTAL函數忽略任何不包括在篩選結果中的行;SUBTOTAL函數適用於數據列或垂直區域,不適用於數據行或水平區域。
函數名稱:SUM
主要功能:計算所有參數數值的和。
使用格式:SUM(Number1,Number2……)
參數說明:Number1、Number2……代表需要計算的值,可以是具體的數值、引用的單元格(區域)、邏輯值等。
應用舉例:如圖7所示,在D64單元格中輸入公式:=SUM(D2:D63),確認后即可求出語文的總分。
特別提醒:如果參數為數組或引用,只有其中的數字將被計算。數組或引用中的空白單元格、邏輯值、文本或錯誤值將被忽略;如果將上述公式修改為:=SUM(LARGE(D2:D63,{1,2,3,4,5})),則可以求出前5名成績的和。
函數名稱:SUMIF
主要功能:計算符合指定條件的單元格區域內的數值和。
使用格式:SUMIF(Range,Criteria,Sum_Range)
參數說明:Range代表條件判斷的單元格區域;Criteria為指定條件表達式;Sum_Range代表需要計算的數值所在的單元格區域。
應用舉例:如圖7所示,在D64單元格中輸入公式:=SUMIF(C2:C63,"男",D2:D63),確認后即可求出“男”生的語文成績和。
特別提醒:如果把上述公式修改為:=SUMIF(C2:C63,"女",D2:D63),即可求出“女”生的語文成績和;其中“男”和“女”由於是文本型的,需要放在英文狀態下的雙引號("男"、"女")中。
函數名稱:TEXT
主要功能:根據指定的數值格式將相應的數字轉換為文本形式。
使用格式:TEXT(value,format_text)
參數說明:value代表需要轉換的數值或引用的單元格;format_text為指定文字形式的數字格式。
應用舉例:如果B68單元格中保存有數值1280.45,我們在C68單元格中輸入公式:=TEXT(B68,"$0.00"),確認后顯示為“$1280.45”。
特別提醒:format_text參數可以根據“單元格格式”對話框“數字”標籤中的類型進行確定。
函數名稱:TODAY
主要功能:給出系統日期。
使用格式:TODAY()
參數說明:該函數不需要參數。
應用舉例:輸入公式:=TODAY(),確認后即刻顯示出系統日期和時間。如果系統日期和時間發生了改變,只要按一下F9功能鍵,即可讓其隨之改變。
特別提醒:顯示出來的日期格式,可以通過單元格格式進行重新設置。
函數名稱:VALUE
主要功能:將一個代表數值的文本型字元串轉換為數值型。
使用格式:VALUE(text)
參數說明:text代表需要轉換文本型字元串數值。
應用舉例:如果B74單元格中是通過LEFT等函數截取的文本型字元串,我們在C74單元格中輸入公式:=VALUE(B74),確認后,即可將其轉換為數值型。
特別提醒:如果文本型數值不經過上述轉換,在用函數處理這些數值時,常常返回錯誤。
函數名稱:VLOOKUP
主要功能:在數據表的首列查找指定的數值,並由此返回數據表當前行中指定列處的數值。
使用格式:VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
參數說明:Lookup_value代表需要查找的數值;Table_array代表需要在其中查找數據的單元格區域;Col_index_num為在table_array區域中待返回的匹配值的列序號(當Col_index_num為2時,返回table_array第2列中的數值,為3時,返回第3列的值……);Range_lookup為一邏輯值,如果為TRUE或省略,則返回近似匹配值,也就是說,如果找不到精確匹配值,則返回小於lookup_value的最大數值;如果為FALSE,則返回精確匹配值,如果找不到,則返回錯誤值#N/A。
應用舉例:參見圖7,我們在D65單元格中輸入公式:=VLOOKUP(B65,B2:D63,3,FALSE),確認后,只要在B65單元格中輸入一個學生的姓名(如丁48),D65單元格中即刻顯示出該學生的語言成績。
特別提醒:Lookup_value參見必須在Table_array區域的首列中;如果忽略Range_lookup參數,則Table_array的首列必須進行排序;在此函數的嚮導中,有關Range_lookup參數的用法是錯誤的。
函數名稱:WEEKDAY
主要功能:給出指定日期的對應的星期數。
使用格式:WEEKDAY(serial_number,return_type)
參數說明:serial_number代表指定的日期或引用含有日期的單元格;return_type代表星期的表示方式[當Sunday(星期日)為1、Saturday(星期六)為7時,該參數為1;當Monday(星期一)為1、Sunday(星期日)為7時,該參數為2(這種情況符合中國人的習慣);當Monday(星期一)為0、Sunday(星期日)為6時,該參數為3]。
應用舉例:輸入公式:=WEEKDAY(TODAY(),2),確認后即給出系統日期的星期數。
特別提醒:如果是指定的日期,請放在英文狀態下的雙引號中,如=WEEKDAY("2003-12-18",2)。