對函數(shù)的進(jìn)一步討論學(xué)習(xí)教案_第1頁
對函數(shù)的進(jìn)一步討論學(xué)習(xí)教案_第2頁
對函數(shù)的進(jìn)一步討論學(xué)習(xí)教案_第3頁
對函數(shù)的進(jìn)一步討論學(xué)習(xí)教案_第4頁
對函數(shù)的進(jìn)一步討論學(xué)習(xí)教案_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、會計(jì)學(xué)1對函數(shù)對函數(shù)(hnsh)的進(jìn)一步討論的進(jìn)一步討論第一頁,共39頁。8.1 局部變量與全局變量局部變量:在函數(shù)的頭部、內(nèi)部聲明的變量。局部變量具有私有性,其可訪問區(qū)域在函數(shù)內(nèi)部,其他函數(shù)不能訪問它們。私有性使得不同函數(shù)可以使用相同名稱(mngchng),而不會引起沖突。全局變量:在函數(shù)外部聲明的變量。全局變量具有公共性。它們可被程序中其后定義的函數(shù)訪問。公共性使得不同函數(shù)可以共享同一個變量中的數(shù)據(jù),從而達(dá)到數(shù)據(jù)傳遞的目的。兩種變量規(guī)定了變量名稱(mngchng)的可訪問區(qū)域,也稱為變量的作用域。第1頁/共38頁第二頁,共39頁。#include#include#define EPSILO

2、N 1e-6float disc,x1,x2,realpart,imagpart;float disc,x1,x2,realpart,imagpart;void root1(double a,double b);void root2(double a,double b);void root3(double a,double b);void main() float a,b,c; scanf(%f%f%f,&a,&b,&c); discdisc=b*b-4*a*c; if (fabs(disc)EPSILON)root2(a,b);printf(has distinct

3、real roots:%8.4f and %8.4fn,x1,x2x1,x2); else root3(a,b);printf(has complex roots:n);printf(%8.4f+%8.4f in,realpart,imagpartrealpart,imagpart);printf(%8.4f-%8.4f in,realpart,imagpartrealpart,imagpart); ; 第2頁/共38頁第三頁,共39頁。void root1(double a, double b ) x1=-b/(2*a);void root2(double a, double b) x1=(

4、-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);void root3(double a, double b) realpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);第3頁/共38頁第四頁,共39頁。8.2 變量的存儲(cn ch)屬性變量(binling)的作用域規(guī)定了變量(binling)名稱的可訪問區(qū)域。變量(binling)的存儲類別規(guī)定了在何時何處為變量(binling)分配存儲空間,當(dāng)變量(binling)初始化后,生存期是多長,哪些函數(shù)可以使用它。C中有4種存儲類別: 自動存儲寄存器存儲 靜態(tài)存儲 外部存儲

5、第4頁/共38頁第五頁,共39頁。lauto類別是使用內(nèi)存最高效的方式,因此是局部變量的默認(rèn)類型。lstatic存儲屬性的變量在程序開始執(zhí)行時一次性分配和初始化,其存在于整個程序運(yùn)行期間。將一個局部變量聲明為static 的目的用來記憶函數(shù)的信息和一次性初始化大量數(shù)據(jù)。l在由多個源文件組成的程序中,有些函數(shù)、全局變量需要限制在一個源文件中使用(內(nèi)部函數(shù)、內(nèi)部全局變量),有些函數(shù)、全局變量需要被其他源文件引用(ynyng)(外部函數(shù)、外部全局變量) ,可以通過static或extern關(guān)鍵字對這些函數(shù)和數(shù)據(jù)對象進(jìn)行聲明成內(nèi)部的或外部的。第5頁/共38頁第六頁,共39頁。/* file1.*/#i

6、nclude int A; int power(int); void main() int b3,c,d,m; scanf(%d, %d,&A,&m); cA*b; printf( %d* %d %d,A,b,c); dpower(m); printf(*n,A,m,d); 第6頁/共38頁第七頁,共39頁。/* file2.*/extern int A; /int power(int ) int i,y1; for(i=1;i=;i+)y*A; return ;第7頁/共38頁第八頁,共39頁。8.3 函數(shù)(hnsh)的存儲屬性函數(shù)的存儲(cn ch)類別默認(rèn)為extern。

7、在調(diào)用其他源文件中定義的函數(shù)時,只需在調(diào)用文件中對函數(shù)進(jìn)行聲明。例如,F(xiàn)ile2.c中定義了函數(shù)enter_string#include void enter_string(char str) gets(str); 單獨(dú)(dnd)編譯第8頁/共38頁第九頁,共39頁。void delete_string(char str,char ch) int i,j; for(i=j=0;stri!=0;i+) if(stri!=ch) strj+=stri; stri=0;File3.c中定義(dngy)了函數(shù)delete_string第9頁/共38頁第十頁,共39頁。#include void pri

8、nt_string(char str) puts(str);File4.c中定義(dngy)了函數(shù)print_string第10頁/共38頁第十一頁,共39頁。void enter_string(char str);void detele_string(char str,char ch); void print_string(char str); void main() char c; char str80; enter_string(str); detele_string(str,c); print_string(str);在File1.c中引用3個外部函數(shù)(hnsh),只需對它們進(jìn)行聲明單

9、獨(dú)(dnd)編譯第11頁/共38頁第十二頁,共39頁。static void f(int n);/函數(shù)(hnsh)名f限制在本文件void main ( ) f(m); void f(int n) file1.c如果(rgu)要將函數(shù)名的作用域限制在本文件,可以在函數(shù)聲明的前面加static關(guān)鍵字,這種函數(shù)稱為“內(nèi)部函數(shù)”第12頁/共38頁第十三頁,共39頁。static int A;/全局變量名A限制(xinzh)在本文件void main ( ) file1.c如果要將全局變量的作用域限制在本文件,可以在聲明(shngmng)語句前加一個static關(guān)鍵字,這種全局變量稱為“內(nèi)部全局變量”

10、第13頁/共38頁第十四頁,共39頁。什么是編譯預(yù)處理?源程序在編譯前由編譯預(yù)處理器執(zhí)行的命令(mng lng),主要完成程序的文本處理以提高程序開發(fā)效率。#define、#include都是編譯預(yù)處理命令(mng lng)。8.4 編譯(biny)預(yù)處理第14頁/共38頁第十五頁,共39頁。語法(yf):#define 宏標(biāo)識符 字符串例:#define PI 3.1415926預(yù)處理程序?qū)⒃闯绦蛑械暮陿?biāo)識符替換成字符串。1 不帶參數(shù)(cnsh)的宏定義第15頁/共38頁第十六頁,共39頁。 #define PI 3.1415926 void main() float r,area; sca

11、nf(f,&r); area=PI*r*r; printf(The area is fn,area); void main() float r,area; scanf(f,&r); area=3.1415926*r*r; printf(The area is fn,area); 源程序預(yù)處理編譯(biny)中間(zhngjin)源程序第16頁/共38頁第十七頁,共39頁。宏名一般習(xí)慣用大寫字母表示,以便與變量名相區(qū)別。 宏定義沒有“=”(3)宏定義不是語句(yj),不必在行末加分號。 (5)宏的作用域?yàn)槎x之后到文件結(jié)束。(6)在宏定義中,可以引用已定義的宏。 第17頁/共38

12、頁第十八頁,共39頁。#define R 3.0#define PI 3.1415926#define L 2*PI*R#define S PI*R*Rmain() printf(L=%fnS=%fn,L,S);main()printf(“L=%fnS=%fn”,2*3.1415926*3.0,3.1415926*3.0*3.0);預(yù)處理編譯(biny)注意(zh y):雙引號內(nèi)與宏名相同的字符串不進(jìn)行置換源程序中間(zhngjin)源程序第18頁/共38頁第十九頁,共39頁。2 帶參數(shù)(cnsh)的宏定義一般形式(xngsh): define 標(biāo)識符(參數(shù)) 字符串例如:#define PO

13、WER(X) X*X*X#define AREA(r) PI*r*r含義: POWER(X)=X*X*X AREA(r)=PI*r*r第19頁/共38頁第二十頁,共39頁。宏替換的方法:先替換參數(shù),然后(rnhu)再把宏展開#define POWER(X) X*X*XPOWER(3) 3*3*3第20頁/共38頁第二十一頁,共39頁。#define POWER(X) X*X*Xmain() printf(%dn, POWER(3);main()printf(“%dn”, 3*3*3);源程序中間(zhngjin)源程序預(yù)處理編譯(biny)第21頁/共38頁第二十二頁,共39頁。宏定義:#de

14、fine POWER(X) X*X*X將POWER(i+1)替換成 i+1*i+1*i+1宏定義:#define POWER(X)(X)*(X)*(X)將POWER(i+1)替換成 (i+1)*(i+1)*(i+1)結(jié)論(jiln):在定義帶參數(shù)的宏時,常常需要將字符串中的參數(shù)加括號。第22頁/共38頁第二十三頁,共39頁。編程題(2)定義一個帶參數(shù)(cnsh)的宏,實(shí)現(xiàn)求余數(shù)操作。#define MOD(a,b) (a)%(b) void main() int a=2,b=3; printf(dn, MOD(11, 5) ); printf(dn, MOD(a, b) ); printf(d

15、n, MOD(11+5, a+b) );第23頁/共38頁第二十四頁,共39頁。預(yù)處理編譯(biny)define MOD(a,b) (a)%(b) void main() int a=2,b=3; printf(dn,MOD(11,5) ); printf(dn,MOD(a,b) ); printf(dn,MOD(11+5,a+b) );void main() int a=2,b=3; printf(dn,(11)%(5) ); printf(dn,(a)%(b) ); printf(dn,(11+5)%(a+b) );源程序中間(zhngjin)源程序第24頁/共38頁第二十五頁,共39頁

16、。編程題(1)定義帶參數(shù)(cnsh)的宏,求兩個數(shù)中較大數(shù)#define MAX(x,y) (x)(y)?(x):(y)void main() int a,b,c; printf(“enter 3 number“); scanf(“%d%d%d”,&a,&b,&c); printf(dn, MAX(MAX(a,b),c) );第25頁/共38頁第二十六頁,共39頁。預(yù)處理編譯(biny)#define MAX(x,y) (x)(y)?(x):(y)void main() int a,b,c; printf(“enter 3 number“); scanf(“%d%d%d

17、”,&a,&b,&c); printf(dn,MAX(MAX(a,b),c) );void main() int a,b,c; printf(“enter 3 number“); scanf(“%d%d%d”,&a,&b,&c); printf(dn,(a)(b)?(a):(b)(c)?(a)(b)?(a):(b):(c);第26頁/共38頁第二十七頁,共39頁。8.4.2 文件包含(bohn)命令#include 1、包含系統(tǒng)頭文件,對所調(diào)用的庫函數(shù)進(jìn)行聲明。一般(ybn)形式: #include “文件名” 或 #include “文件名”先

18、在當(dāng)前目錄查找,若沒有,再到系統(tǒng)指定的目錄查找。 僅在系統(tǒng)指定的目錄查找。第27頁/共38頁第二十八頁,共39頁。2、包含自己的頭文件。頭文件通常包含了模塊之間的接口,即外部函數(shù)、全局(qunj)常量的導(dǎo)入性指令。/ scroe.#include “a.h”/自己(zj)的頭文件void aver_stu(float scoreN, float avestu);void aver_cor(float scoreN, float avecor);void print_tab(float scoreN, float avestu, float avecor);void main() float s

19、coreMN=91,79,83,81,52,62,71,83,92,98, ;float avestuM; float avecorM;aver_stu(score, avestu);aver_cor(score, avecor);print_tab(score, avestu, avecor);第28頁/共38頁第二十九頁,共39頁。scroe.a.hscroe.a.h源程序中間(zhngjin)源程序預(yù)處理編譯(biny)第29頁/共38頁第三十頁,共39頁。【綜合練習(xí)】運(yùn)行多文件的程序 已知10個學(xué)生5門課成績,分別用函數(shù)實(shí)現(xiàn)下列(xili)功能:計(jì)算每個學(xué)生5門課平均分aver_stu

20、();計(jì)算每門課程10個學(xué)生平均分aver_cor();輸出結(jié)果print_tab();第30頁/共38頁第三十一頁,共39頁。 學(xué)號/課程(kchng)12345平均 191.0079.0083.0081.0052.0077.2 262.0071.0083.0092.0098.0081.20 390.0070.0050.0060.0040.0062.00 478.0098.0087.0083.0067.0082.60 566.0077.0088.0055.0067.0070.60 691.0079.0083.0081.0052.0077.20 762.0071.0083.0092.0096.

21、0081.20 890.0070.0050.0060.0040.0062.00 978.0098.0087.0083.0067.0082.60 1066.0077.0088.0055.0067.0070.60平均 77.4079.0078.2074.2064.80第31頁/共38頁第三十二頁,共39頁。scoreMN數(shù)組avestuM數(shù)組avecorN第32頁/共38頁第三十三頁,共39頁。#include “a.h”/自己(zj)的頭文件void aver_stu(void);void aver_cor(void);void print_tab(void);float scoreMN=91,

22、79,83,81,52,;/全局?jǐn)?shù)組float avestuM; /全局?jǐn)?shù)組float avecorN;/全局?jǐn)?shù)組void main() aver_stu(); aver_cor(); print_tab(void);方法1、利用(lyng)全局?jǐn)?shù)組傳遞數(shù)據(jù):第33頁/共38頁第三十四頁,共39頁。#include “a.h” /自己(zj)的頭文件void aver_stu(float scoreN, float avestu);void aver_cor(float scoreN, float avecor);void print_tab(float scoreN, float avest

23、u, float avecor);void main() float scoreMN=91,79,83,81,52,62,71,83,92,98, ;float avestuM; float avecorN;aver_stu(score, avestu);aver_cor(score, avecor);print_tab(score, avestu, avecor);方法2、利用(lyng)數(shù)組參數(shù)傳遞數(shù)據(jù):第34頁/共38頁第三十五頁,共39頁。創(chuàng)建(chungjin)源程序文件a.c#include “a.h”void aver_stu(float scoreN, float avestu);void aver_cor(f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論