![c語(yǔ)言程序設(shè)計(jì)課件h_第1頁(yè)](http://file4.renrendoc.com/view/e04d4a8bd4f024b23abcc71bb3d32ab7/e04d4a8bd4f024b23abcc71bb3d32ab71.gif)
![c語(yǔ)言程序設(shè)計(jì)課件h_第2頁(yè)](http://file4.renrendoc.com/view/e04d4a8bd4f024b23abcc71bb3d32ab7/e04d4a8bd4f024b23abcc71bb3d32ab72.gif)
![c語(yǔ)言程序設(shè)計(jì)課件h_第3頁(yè)](http://file4.renrendoc.com/view/e04d4a8bd4f024b23abcc71bb3d32ab7/e04d4a8bd4f024b23abcc71bb3d32ab73.gif)
![c語(yǔ)言程序設(shè)計(jì)課件h_第4頁(yè)](http://file4.renrendoc.com/view/e04d4a8bd4f024b23abcc71bb3d32ab7/e04d4a8bd4f024b23abcc71bb3d32ab74.gif)
![c語(yǔ)言程序設(shè)計(jì)課件h_第5頁(yè)](http://file4.renrendoc.com/view/e04d4a8bd4f024b23abcc71bb3d32ab7/e04d4a8bd4f024b23abcc71bb3d32ab75.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第7章 函數(shù)(3)第7章 函數(shù)7.1 函數(shù)概述7.2 函數(shù)的定義7.3 函數(shù)的參數(shù)和函數(shù)的返回值7.4 函數(shù)的調(diào)用7.5 函數(shù)的嵌套和遞歸調(diào)用7.6 數(shù)組作為函數(shù)的參數(shù)7.7 局部變量和全局變量7.8 變量的存儲(chǔ)類(lèi)別7.9 內(nèi)部函數(shù)和外部函數(shù)7.10 程序設(shè)計(jì)舉例主要內(nèi)容:7.9 內(nèi)部函數(shù)和外部函數(shù) 一個(gè)C程序可包含多個(gè)函數(shù),這些函數(shù)又可分布在多個(gè)程序文件中。 函數(shù)的定義是獨(dú)立的,而函數(shù)之間存在著調(diào)用關(guān)系。 函數(shù)可被它所在程序中的其他函數(shù)所調(diào)用,可以指定不能被其它程序文件中的函數(shù)調(diào)用。 根據(jù)函數(shù)能否被其他源文件中的函數(shù)調(diào)用,可將函數(shù)分為兩類(lèi):內(nèi)部函數(shù)和外部函數(shù)。7.9.1 內(nèi)部函數(shù) 內(nèi)部函數(shù)是
2、只能被本程序文件中的函數(shù)調(diào)用的函數(shù),其它程序文件的函數(shù)不能調(diào)用該函數(shù),內(nèi)部函數(shù)也稱為靜態(tài)函數(shù)。內(nèi)部函數(shù)的定義格式如下: static 數(shù)據(jù)類(lèi)型函數(shù)名(形式參數(shù)表列) 說(shuō)明部分; 語(yǔ)句部分; 7.9.2 外部函數(shù) 外部函數(shù)是可以被程序中的其他程序文件所調(diào)用的函數(shù)。定義格式如下: extern 數(shù)據(jù)類(lèi)型函數(shù)名(形式參數(shù)表列) 說(shuō)明部分; 語(yǔ)句部分; 外部函數(shù)是C語(yǔ)言默認(rèn)的函數(shù)類(lèi)型,若省略extern,系統(tǒng)默認(rèn)為外部函數(shù),可以被其它程序文件中的函數(shù)所調(diào)用。 例7.16分析下列程序的運(yùn)行結(jié)果。/*file1.c*/#include #include int main( ) extern char ge
3、t_ch(); /*外部函數(shù)聲明*/ printf(“%c”,get_ch(); return 0; /*file2.c*/char get_ch() char ch; ch=getchar(); if (a=ch & ch=z) ch=ch-32; return(ch); 該程序由兩個(gè)程序文件file1.c和file2.c組成,file2.c中定義的函數(shù)get_ch是外部函數(shù)。file1.c中定義了main函數(shù),并對(duì)file2.c中定義的函數(shù)進(jìn)行了聲明。 運(yùn)行該程序: 若輸入:a 輸出為:A 注意:若要調(diào)用其它程序文件中定義的函數(shù),必須先對(duì)其進(jìn)行聲明,其聲明格式為: extern 外部函數(shù)原
4、型; 對(duì)于存儲(chǔ)類(lèi)型為static類(lèi)型的函數(shù),只能被其所在的程序文件中的函數(shù)調(diào)用,其它程序文件不能使用它。若在其它程序文件中聲明或調(diào)用已定義為static存儲(chǔ)類(lèi)型的函數(shù)就會(huì)發(fā)生錯(cuò)誤。 使用內(nèi)部函數(shù),可以限定函數(shù)的作用域,即使在不同的程序文件中使用同名的內(nèi)部函數(shù),也不會(huì)相互干擾。內(nèi)部函數(shù)的這個(gè)特點(diǎn)便于不同的用戶分別編寫(xiě)不同的函數(shù),而不用考慮重名問(wèn)題。如何運(yùn)行一個(gè)多文件的程序用#include命令將各文件包含到文件1中,即在文件1的開(kāi)頭加上: include “file2.c” include “file3.c” 例7.17 編寫(xiě)一個(gè)幫助小學(xué)生練習(xí)兩位整數(shù)加法或減法的程序。由計(jì)算機(jī)隨機(jī)自動(dòng)出題顯示在
5、屏幕上,小學(xué)生從鍵盤(pán)輸入答案,計(jì)算機(jī)根據(jù)輸入的答案顯示“回答正確”或“回答錯(cuò)誤”??勺杂蛇x擇練習(xí)加法或練習(xí)減法或結(jié)束練習(xí)。練習(xí)題的數(shù)量不加限制。# include int numb() /*隨機(jī)產(chǎn)生正整數(shù) 函數(shù)(兩位數(shù))*/ int n; mark1: n=rand(); /*rand()值是0到32767 之間的隨機(jī)整數(shù)*/ if (n=100 | n10) goto mark1; return n; 7.10 程序設(shè)計(jì)舉例void add() /*練習(xí)加法函數(shù)*/int a,b,c,x=1; while(x=1) a=numb(); b=numb(); printf(%d+%d=,a,b)
6、; scanf(%d,&c); if (a+b=c) printf(回答正確!n); else printf(回答錯(cuò)誤!n); printf(“若想停止練習(xí)加法請(qǐng)輸入0, 否則請(qǐng)輸入1。n); scanf(%d,&x); void sub() /*練習(xí)減法函數(shù)*/int a,b,c,x=1; while(x=1) mark2:a=numb(); b=numb(); if (ab) goto mark2; printf(%d-%d=,a,b); scanf(%d,&c); if (a-b=c) printf(回答正確!n); else printf(回答錯(cuò)誤!n); printf(若想停止練習(xí)減
7、法請(qǐng)輸入0, 否則請(qǐng)輸入1。n); scanf(%d,&x); return;main()int d; srand(time(NULL); /*設(shè)置隨機(jī)數(shù)種子為當(dāng)前時(shí)間*/ while (1) printf(-小學(xué)生兩位數(shù)加、減法練習(xí)軟件-n); printf(-1、練習(xí)兩位數(shù)加法-n); printf(-2、練習(xí)兩位數(shù)減法-n); printf(-3、結(jié)束練習(xí)- -n); printf(-請(qǐng)輸入1或2或3-:); scanf(%d,&d); if (d=1) add(); else if (d=2) sub(); else if (d=3) printf(-本次練習(xí)結(jié)束了,再見(jiàn)!- n);
8、break; else printf(-輸入錯(cuò)誤!請(qǐng)重新輸入!- n); return 0; 例7.18 某個(gè)班級(jí)有若干名學(xué)生,請(qǐng)編寫(xiě)完成下面任務(wù)的程序:(1)輸入每個(gè)學(xué)生的姓名、某一門(mén)課程的平時(shí)成績(jī)、期中成績(jī)和期末成績(jī)。(2)計(jì)算并輸出總評(píng)成績(jī)(總評(píng)成績(jī)=平時(shí)成績(jī)*0.1+期中成績(jī)*0.3+期末成績(jī)*0.6)。(3)根據(jù)總評(píng)成績(jī)對(duì)學(xué)生分類(lèi)統(tǒng)計(jì),即統(tǒng)計(jì)總評(píng)成績(jī)90的人數(shù)、總評(píng)成績(jī)80且90的人數(shù)、總評(píng)成績(jī)70且80的人數(shù)、總評(píng)成績(jī)60且70的人數(shù)、總評(píng)成績(jī)60的人數(shù)。(4)根據(jù)輸入的學(xué)生姓名,查找并打印該學(xué)生的各項(xiàng)成績(jī)。#include #define SIZE 100 /*不妨設(shè)班級(jí)學(xué)生數(shù)少
9、于100*/void inputdata( ); /*函數(shù)聲明*/void calculdata( ); /*函數(shù)聲明*/void statisdata( ); /*函數(shù)聲明*/void querydata ( ); /*函數(shù)聲明*/float scoreSIZE4; /* score存儲(chǔ)每個(gè)學(xué)生平時(shí)、期中、期末和總評(píng)成績(jī)*/char nameSIZE15; /* name存儲(chǔ)每個(gè)學(xué)生姓名*/int sum; /* sum存儲(chǔ)實(shí)際學(xué)生人數(shù)*/int main() int choo; printf(“請(qǐng)輸入實(shí)際學(xué)生人數(shù):”); scanf(“%d”, &sum); while(1) printf
10、(“請(qǐng)選擇下面的某一項(xiàng)任務(wù):”); printf(“n(1)輸入每個(gè)學(xué)生的姓名、平時(shí)成績(jī)、期中成績(jī)、期末成績(jī)?!?; printf(“n(2)計(jì)算并輸出每個(gè)學(xué)生的總評(píng)成績(jī)?!?; printf(“n(3)根據(jù)總評(píng)成績(jī)對(duì)學(xué)生分類(lèi)統(tǒng)計(jì),輸出各分?jǐn)?shù)段的學(xué)生數(shù)。”); printf(“n(4)根據(jù)輸入的學(xué)生姓名,查找并打印該學(xué)生的各項(xiàng)成績(jī)?!?; printf(“n(5)結(jié)束程序運(yùn)行?!?; printf(“n請(qǐng)輸入你的選擇(1或2或3或4或5):”); scanf(“%d”, &choo); if (choo=5)break; switch(choo) case 1 : inputdata( );
11、break; /*調(diào)用輸入學(xué)生姓名成績(jī)函數(shù)*/ case 2 : calculdata( ); break; /*調(diào)用計(jì)算總評(píng)成績(jī)函數(shù)*/ case 3 : statisdata( ); break; /*調(diào)用統(tǒng)計(jì)各分?jǐn)?shù)段人數(shù)函數(shù)*/ case 4 : querydata( ); break; /*調(diào)用根據(jù)姓名查找函數(shù)*/ printf(“n程序運(yùn)行結(jié)束,再見(jiàn)?!?; return 0; void inputdata( ) /*輸入學(xué)生姓名成績(jī)函數(shù)*/ int i;for(i=0;isum;i+) printf(“n請(qǐng)輸入學(xué)生的姓名:”); gets(namei); printf(“請(qǐng)順序輸入
12、學(xué)生平時(shí)、期中、期末成績(jī) (例如98,85,96):”); scanf(“%f,%f,%f”, &scorei0, &scorei1,&scorei2); return; void calculdata( ) /*計(jì)算總評(píng)成績(jī)函數(shù)*/ int i; for(i=0;isum;i+) scorei3= 0.1*scorei0+ 0.3*scorei1 + 0.6*scorei2; printf(“n每個(gè)學(xué)生總評(píng)成績(jī)?nèi)缦?n”); for(i=0;isum;i+) printf(“%s:%fn”,namei,scorei3); return; void statisdata( ) /*統(tǒng)計(jì)各分?jǐn)?shù)段
13、人數(shù)函數(shù)*/ int i,d, grade5=0; /* grade存儲(chǔ)分類(lèi)統(tǒng)計(jì)結(jié)果(各分?jǐn)?shù)段人數(shù))*/ for (i=0;isum;i+) d=(int)(scorei3/10); switch(d) case 10 : case 9 : grade4=grade4+1;break; case 8 : grade3=grade3+1;break; case 7 : grade2=grade2+1;break; case 6 : grade1=grade1+1;break; default : grade0=grade0+1; printf(“n總評(píng)成績(jī)90的人數(shù)是:%d”, grade4 )
14、; printf(“n總評(píng)成績(jī)80且90的人數(shù)是:%d”, grade3 ); printf(“n總評(píng)成績(jī)70且80的人數(shù)是:%d”, grade2 ); printf(“n總評(píng)成績(jī)60且70的人數(shù)是:%d”, grade1 ); printf(“n總評(píng)成績(jī)60的人數(shù)是:%d”, grade0 ); return; void querydata( ) /*根據(jù)姓名查找函數(shù)*/ char lookname20; int i; printf(“n請(qǐng)輸入姓名:”); gets(lookname); for(i=0;isum;i+) /*根據(jù)輸入的姓名,查找并打印該學(xué)生各項(xiàng)成績(jī)*/ if (strcmp(namei,lookname)=
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年陳夢(mèng)與劉陽(yáng)離婚協(xié)議書(shū)策劃模板
- 雙邊教育合作諒解協(xié)議書(shū)模板
- 2025年市場(chǎng)調(diào)研與分析咨詢服務(wù)委托協(xié)議
- 2025年供應(yīng)商與裝修企業(yè)合作框架協(xié)議
- 2025年企業(yè)合同解除操作規(guī)范
- 2025年勞動(dòng)合同標(biāo)準(zhǔn)范本分享
- 2025年倉(cāng)儲(chǔ)糧食管理協(xié)議
- 2025年住宅物業(yè)購(gòu)買(mǎi)補(bǔ)充協(xié)議
- 2025年勞動(dòng)人員雇傭協(xié)議
- 2025年八人合伙企業(yè)股權(quán)分配協(xié)議書(shū)
- (完整)PEP人教版小學(xué)生英語(yǔ)單詞四年級(jí)上冊(cè)卡片(可直接打印)
- 面神經(jīng)疾病課件
- 漢代儒學(xué)大師董仲舒思想課件
- 普通沖床設(shè)備日常點(diǎn)檢標(biāo)準(zhǔn)作業(yè)指導(dǎo)書(shū)
- 科技文獻(xiàn)檢索與利用PPT通用課件
- 《紅樓夢(mèng)講稿》PPT課件
- DB33∕T 628.1-2021 交通建設(shè)工程工程量清單計(jì)價(jià)規(guī)范 第1部分:公路工程
- 吉祥喜金剛現(xiàn)證中品事業(yè)六支妙嚴(yán)(節(jié)錄)
- 國(guó)民中小學(xué)九年一貫課程綱要語(yǔ)文學(xué)習(xí)領(lǐng)域(國(guó)語(yǔ)文)
- 最全的人教初中數(shù)學(xué)常用概念、公式和定理
- 橋面結(jié)構(gòu)現(xiàn)澆部分施工方案
評(píng)論
0/150
提交評(píng)論