標籤:style class 大括弧 心得 自己 math 完全 封裝 color
一、本次課學習到的知識點:
1、函數的定義:函數是一個完成特定工作的獨立程式模組,包括函數和自訂函數兩種。
2、以計算圓柱體體積為例,通過定義體積計算功能的函數和主函數調用的例子,引出函數定義的一般形式:函數首部加函數體,且在函數結尾處通過return 語句返回結果。
函數類型 函數名(形式參數表) /*函數首部*/
{
函數實現過程 /*函數體*/
}
return 運算式;
3、函數首部由函數類型,函數名和形式參數表組成,位於函數定義第一行。函數類型指函數結果返回的類型,一般與return語句中運算式的類型一致。形參表中給出Function Compute所要用到的相關已知條件,以類似變數定義的形式給出。形參表中各個形參之間用逗號分隔,每個形參前面的類型必須分別寫明。函數的形參的數量可以是一個,也可以是多個,或者沒有形參。
4、形參、實參及參數傳遞。形參只能用變數表示,在函數中起作用;實參可以是變數、常量或運算式,在主調函數中。實參與形參要個數一致,類型一致。參數傳遞時,實參把變數、常量的值或者運算式結果值傳遞給形參。
5、函數定義首部與聲明。二者形式相似,函式宣告的目的主要是說明函數的類型和參數的情況,以保證程式編譯時間對函數調用是否正確做出判斷,聲明位置通常在主函數前面。而函數定義首部位於函數定義的第一行,與函數體連續書寫組成函數定義。
6、函式宣告是一條c語句,而函數定義時的函數首部不是語句,後面不能跟分號。如果在調用函數前,既不定義,也不聲明,程式編譯時間會出錯。
二、實驗過程中遇到的問題及解決方案:
1、會發現程式編譯正確,結果卻不正確,卻不能發現問題在哪。
2、在練習5-1中,雖然老師講了正確做法,但我不知道自己編寫的哪裡出現了問題。
題目:使用函數求1到n之和:輸入一個正整數n,輸出1~n之和。要求定義和調用函數sum(n)求1~n之和。
#include<stdio.h>#include<math.h>int sum(int n);int main(void){ int n,sum; printf("請輸入一個正整數n:"); scanf("%d",&n); printf("sum=%.0f\n"); return 0; } int sum(int n){ int i,sum; for(i=1;i<=n;i++) sum=sum+i; return n;}
三、實驗心得體會及本章學習總結
函數是c語言程式的基本組成單元,編寫每一個程式都需要用到函數,如main()函數和priintf()、scanf()等函數。
本章介紹了函數的定義和使用,討論了變數與函數的關係。
函數首部三要素:函數類型,函數名,形式參數表。
函數的調用:任何c程式執行,首先從主函數main()開始,如果遇到某個函數調用,主函數被暫停執行,轉而執行相應的函數,該函數執行完後將返回主函數,然後再從原先暫停位置繼續執行。
形參和實參必須一一對應,實參的值依次傳給形參。
函式宣告:c語言要求函數先定義後調用。如果自訂函數被放在主調函數的後面,就需要在函數調用前,加上函數原型聲明。
四、預習
1、在例題5-5中,pyramid()函數的功能是在螢幕上輸出數字金字塔,不做任何運算,也沒有運算結果,也不需要傳回值。函數定義時,形參n決定了需要輸出的數字金字塔的層數。
2、區別:前面介紹的函數都是起計算或判斷作用,最終有一個函數結果返回。在例題5-5中,調用函數的作用就是在螢幕上輸出數字金字塔,不是為了得到某個運算結果,而是要讓它產生某些作用。
3、不返回結果的函數定義:
void 函數名(形參表)
{
函數實現過程
}
函數類型為void,表示不返回結果,函數體中可以使用沒有運算式的return語句,也可以省略return。void類型的函數雖然不直接返回一個值,但它的作用通常以螢幕輸出等方式體現。
在不返回結果的函數定義中,void不能省略,否則,函數類型被預設定義為int。
4、例5-5定義pyramid()函數時,省略了return語句,並不意味著函數不能返回。對於void類型的函數,如果省略了return語句,當函數中所用語句都執行完後,遇到最後的大括弧即自動返回主調函數。
5、不返回結果的函數在定義、調用、參數傳遞、函式宣告上,思路完全與以前相同,只是函數類型變為void。它適用的場合主要是把一些確定的、相對獨立的程式功能封裝成函數。
實驗七——函數定義及調用總結