欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    第六章 函数.docx

    • 资源ID:13171934       资源大小:42.08KB        全文页数:28页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第六章 函数.docx

    1、第六章 函数第六章 函數6-1基本概念何謂函數:許多相關的程式指令放在一起,加以命名,形成一個執行單元例如主程式main(x)為標準函數用途:a.減少重複撰寫類似功能的程式b.易於除錯和維護分成數個模組,分別開發和測試語法:下列三步驟a. 宣告:建立函數的原型b. 定義:函數內容寫成程式c. 呼叫:使用已定義過的函數 範例說明1.產生攝氏與華氏溫度的對照表 /TempConv.cpp #include using std:cin; using std:cout; using std:endl; #include using std:setw; /Declaration of C2F doubl

    2、e C2F(double);/說明double C2F(double)/double是回傳值C2F是函數名稱(double)呼叫函數時,由呼叫函數傳入值 /Main Function int main() double CTemp; cout攝氏 華氏endl; cout_endl; for(int i=1;i=10;i+) CTemp=10.0*i; coutsetw(5)CTemp setw(5)C2F(CTemp)endl;cout_endl;return 0;/Define C2F(double c)double C2F(double c) double F; F=c*9.0/5.0+

    3、32.0; return F; 1. Function Prototypea. 函數原型(Prototype)的通式為 返回資料型態 函數名稱(參數資料型態列);b. 小括號內容稱為function call operatorc. Function Prototype置於主程式之前d. 常見的Function Prototype無參數傳入函數Ex: int Warning( )單參數型態Ex :int MaxInt(int)多參數型態 Ex: int MaxInt(int,int,int)e. 參數名稱定義 Ex: int Area(int width,int length)f. 不返回資料

    4、Ex: void Swap(double,double) 2. Definition of Function定義的語法 返回資料型態 函數名稱(參數列)/ header line /Function body Statement; return 傳回值;Example:double C2F(double c) double F; F=c*9.0/5.0+32.0; return F; 3. Call Function 可分成有引數(argument)無引數有返回資料無返回資料a.有引數與無引數之呼叫有引數:指呼叫函數時,必須有值傳給函數例: coutC2F(CTemp) CTemp為從主程式呼

    5、叫函數時,傳給函數之值無引數:從主程式呼叫函數時,不用傳值給函數例: swap( )b. 有返回無返回資料 有返回資料:於宣告prototype時,即有回傳資料型態 例如:float C2F(float); /宣告 coutC2F(CTemp);/呼叫 無返回資料:不回傳資料 例如:void C2F(float);/宣告 C2F(CTemp);/呼叫 範例說明2.求1+2+3+N,其中1+2+3+N採用函數之寫法1. 有引數有返回之寫法/Sum.cpp#include using std:cin; using std:cout; using std:endl; int sum(int); in

    6、t main() int N,Total; coutN; Total=sum(N); coutThe sum of 1+2+3+N=Totalendl;return 0;int sum(int number) int sumup=0; for(int i=1;i=number;i+)sumup+=i; return sumup;2. 有引數無返回之寫法/Sum.cpp#include using std:cin; using std:cout; using std:endl; void sum(int); int main() int N,Total; coutN; sum(N);return

    7、 0;void sum(int number) int sumup; for(int i=1;i=N;i+)sumup+=i;coutThe sum of 1+2+3+number=sumupendl;練習1:求,採用有引數無返回函數之寫法練習2:求,採用有引數有返回函數之寫法練習3:輸入任意數,再找出最大值,用for structure,並採用無引數無返回函數之寫法6.2 Call by value(傳值呼叫) 1. 程式運作程序:a. 呼叫函數函數被呼叫時,將引數複製到堆疊(stack),稱為傳值(call by value or pass by value)b. 被呼叫函數將參數初始化為

    8、堆疊內的值Ex:將CTempcc. 運算完畢後將結果複製一份至堆疊內Ex:將Fstackd. 呼叫函數再把堆疊內的結果複製一份回來課本page.6-9_圖6.1.2 2. 不使用Prototype的語法將函數定義置於函數原型的位置 範例說明1:TempConv2.cpp #include using std:cout; using std:endl; #include using std:setw;/Define C2F(double c)double C2F(double c) double F; F=c*9.0/5.0+32.0; return F; /Main Function int

    9、main() double CTemp; cout攝氏 華氏endl; cout_endl; for(int i=1;i=10;i+) CTemp=10.0*i; coutsetw(5)CTemp setw(5)C2F(CTemp)endl;cout_endl;return 0; 3. 函數內return功能return可以提早結束程式 範例說明2:SeasonFnc.cpp #include using std:cin; using std:cout; using std:endl; void CheckSeason(int); int main() int M; coutM;CheckSe

    10、ason(M);return 0; void CheckSeason(int Month) if(Month12) coutYou input a error month!endl; return; coutMonth Month is ; switch(Month%12)/3) case 0: coutWinterendl; break; case 1:coutSpringendl; break; case 2:coutSummerendl; break; case 3:coutAutumnendl; break; default:coutProgram never arrival here

    11、!endl;return; 練習1:寫一個sum( ),可以指定要累加到的數字,並把結果傳回 練習2:寫一個circle( )的函數計算圓面積,prototype如float circle(float r);6-3 Call by reference 1. 參照 定義:同一個變數的別名(alias) Example: int N; int &M=N; 說明:int N定義了變數N, M為N的alias(參照) &:參照運算子(reference operator),表示M和N所代表的數字於同一個位址上 故對於M所作的變化,對N也會產生變化 故對於N所作的變化,對M也會產生變化 範例說明1: /

    12、Alias.cpp #include using std:cout; using std:endl; int main() int N=10; int &M=N; coutOriginal value of N is Nendl; coutOriginal value of M is Mendl; N=5;coutAfter execution of N=5,the value of M is Mendl; M=2;coutAfter execution of M=2,the value of N is Nendl;return 0;範例說明2:比較pass-by-value和pass-by-

    13、reference的不同#include using std:cout;using std:endl;int squarebyValue(int);void squarebyreference(int &); int main() int x=2; int z=4; coutx=x before square by Valuen; coutValue returned by squarebyValue:squarebyValue(x)endl; coutx=x after square by Valueendl; coutz=z before square by Referencen; squ

    14、arebyreference(z); coutz=z after square by Referenceendl;return 0;int squarebyValue(int number) return number*=number;void squarebyreference(int & numberRef)numberRef*=numberRef; 說明:pass-by-value,執行後原資料不變 pass-by-reference,執行後原資料會變 範例說明3:攝氏與華氏溫度的轉換(以參照方式) /TempConv3.cpp#include#includeusing namespac

    15、e std;void C2F(float,float&);int main()float ctemp,ftemp; cout攝氏 華氏endl; cout_endl; for(int i=1;i=10;i+)ctemp=10.0*i; C2F(ctemp,ftemp); coutsetw(5)ctemp setw(5)ftempendl; cout_endl; return 0;void C2F(float c,float& f)f=c*9.0/5.0+32.0; return;範例說明4:比較參照與非參照轉換資料/Swap.cpp#include using std:cout;using s

    16、td:endl;void swap(int&,int&);void swap2(int,int); int main() int A=5,B=10;swap(A,B); coutAfter execution swap()n; coutThe value of A:Aendl;coutThe value of B:Bendl;swap2(A,B); coutAfter execution swap2()n; coutThe value of A:Aendl;coutThe value of B:Bendl;return 0;void swap(int& x,int& y) int temp;

    17、temp=x;x=y;y=temp;void swap2(int x,int y)int temp; temp=x;x=y;y=temp;6-4 inline函數起源:當函數被呼叫時,主程式主控權會交給被呼叫函數,執行完畢後才把主控權交還呼叫函數因此程式必須在stack中,記錄每階段的執行指令程式指標(instruction pointer IP)或程式計數器(program counter,pc)當函數本身很短,呼叫次數不多時.為減少額外負擔,可採用inline函數使用:編譯時,程式碼在每個呼叫的地方直接展開加入因此不需要浪費時間進行主控權的轉換,直接變成呼叫程式的一段複合敘述範例:將溫度轉

    18、換公式轉成inline函數/Inline.cpp#include using std:cout; using std:endl; #include using std:setw;/Define inline functioninline double C2F(double c) return c*9.0/5.0+32.0; /Main Function int main() double CTemp; cout攝氏 華氏endl; cout_endl; for(int i=1;i=10;i+) CTemp=10.0*i; coutsetw(5)CTemp setw(5)C2F(CTemp)en

    19、dl;cout_endl;return 0;6-5變數適用範圍和生存期間一個變數有下列涵意:1. 資料型態(data type)決定佔用之記憶體大小2. 適用範圍(Scope)3. 生存期間(lifetime) 依據上述三條件可分類成局部變數(Local variable)及全域變數(Global variable) 1.local variable(局部變數)局部變數之宣告格式a. auto:變數只在函數被呼叫時才存在b. static:變數的值保有連續性c. register:暫存器,適用於使用頻繁變數 範例說明1:/Local.cpp#include using std:cin; usi

    20、ng std:cout; using std:endl; void TestLocal(); int main() for(int i=1;i=3;i+) coutithendl; TestLocal(); coutendl;return 0;void TestLocal() auto int A=1; static int B=1; register int R=1; coutThe value of A isAendl;coutThe value of B isBendl;coutThe value of R isRendl;for(int i=0;i1000;i+) R+=2; cout

    21、After R+2,the value of R isRendl; A+;B+;R+;說明:a. 變數A is a auto variable,無法保留上次函數結束值。b. 變數B is a static local variable,可保留上次函數結束值。c. 變數R is a register local variable,可用來提升執行效率,但無法保留上次函數結束值。 練習1:寫一個程式,包括兩個分別叫做Square( )和Cubic( )的inline函數,可以自動產生下列對照表 N N2 N3 - 0 0 0 5 25 125 10 100 1000 50 2500 125000 -

    22、 練習2:在函數Square( )和Cubic( )中分別加入static變數(各稱為CountSquare和CountCubic),讓函數能計算被呼叫次數 2. Global variable(全域變數)Global variable :可以讓函數宣告後之所有變數使用範例說明1.:/Global.cpp#includeusing std:cin;using std:cout;using std:endl;int global=1,global_2=7;/Declaration of global variablevoid TestFnc();/Function Declaration int

    23、 main()int Local=3; global=9; coutThe original value of global is:globalendl; TestFnc(); coutAfter calling TsatFnc().endl; coutThe value of global is:globalendl; coutThe value of Local is:Localendl; return 0;void TestFnc()int Local=2; int global_2=20; Local+=10; global+=10; coutThe value of global_2

    24、 is:global_2endl; cout:The value of global_2 is:global_2endl;*第六章 作業*1. 以函數方式撰寫下列程式:(A)輸入一個數量N,然後輸入N個數值,找出最大值(B)輸入一個數值,告訴程式本數值為二進位、四進位、八進位或十六進位,程式能自動轉成十進位。(C)輸入三數值,判斷能否形成三角形。(D)使用 for 結構去自動加總輸入之總和。程式先輸入欲加總之個數,隨後將個別數值輸入。例如要加總 5個數,其輸入數字之程序如下:5 100 200 300 400 500其中5代表輸入個數,隨後之5個數代表輸入值。(E) 使用 for 結構去找出數

    25、個數字之最小值。例如先輸入6,代表有6個數比大小,隨後輸入此6個數,最後印出最小值。(F) 印出10進位1至256之二進位、8進位及16進位之對照表如下: Decimal Binary Octal Hexadecimal1 000000001 1 12 000000010 2 2.245 011110101 365 f5246 011110110 366 f6247 011110111 367 f7248 011111000 370 f8249 011111001 371 f9250 011111010 372 fa251 011111011 373 fb252 011111100 374 fc253 011111101 375 fd254 011111110 376 fe255 011111111 377 ff256 100000000 400 1002. 以函數方式撰寫下列程式:(1) Write a C+ program that uses a


    注意事项

    本文(第六章 函数.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开