![形參實(shí)參以及調(diào)用方法_第1頁](http://file4.renrendoc.com/view/3fbe7a2659de70eba9406a5598ec89d6/3fbe7a2659de70eba9406a5598ec89d61.gif)
![形參實(shí)參以及調(diào)用方法_第2頁](http://file4.renrendoc.com/view/3fbe7a2659de70eba9406a5598ec89d6/3fbe7a2659de70eba9406a5598ec89d62.gif)
![形參實(shí)參以及調(diào)用方法_第3頁](http://file4.renrendoc.com/view/3fbe7a2659de70eba9406a5598ec89d6/3fbe7a2659de70eba9406a5598ec89d63.gif)
![形參實(shí)參以及調(diào)用方法_第4頁](http://file4.renrendoc.com/view/3fbe7a2659de70eba9406a5598ec89d6/3fbe7a2659de70eba9406a5598ec89d64.gif)
![形參實(shí)參以及調(diào)用方法_第5頁](http://file4.renrendoc.com/view/3fbe7a2659de70eba9406a5598ec89d6/3fbe7a2659de70eba9406a5598ec89d65.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第8章 函數(shù)1主要內(nèi)容:1、函數(shù)的定義2、函數(shù)的調(diào)用(包括嵌套調(diào)用和遞歸調(diào)用)4、局部變量和全局變量5、變量的存儲(chǔ)類別 重點(diǎn):1)如何定義函數(shù)(即如何編寫函數(shù))2)如何調(diào)用函數(shù)(包括庫函數(shù)和自定義函數(shù)) 2函數(shù)的引入函數(shù):函數(shù)是完成某些特定功能的代碼塊。使用函數(shù)的優(yōu)點(diǎn):1)實(shí)現(xiàn)模塊化設(shè)計(jì):將一個(gè)大任務(wù)分解成一個(gè)個(gè)的小任務(wù),然后每個(gè)任務(wù)分別用函數(shù)實(shí)現(xiàn)。2)實(shí)現(xiàn)“編寫一次,多次調(diào)用”,避免在不同的程序中重復(fù)編寫相同的函數(shù)。3)便于程序調(diào)試和維護(hù),因?yàn)槊總€(gè)函數(shù)之間是相互獨(dú)立的。函數(shù)的分類:庫函數(shù)和用戶自定義函數(shù)38.1 函數(shù)的定義例8. 1編寫函數(shù)max:求兩個(gè)整數(shù)x和y中的較大數(shù)。int max
2、(int x, int y) /*函數(shù)頭*/ int z=x; /*函數(shù)體*/ if (xb?a:b); 或 int max(a,b) int a,b; /*形參的類型在函數(shù)體前、函數(shù)名后說明*/ return(ab?a:b); 前者為標(biāo)準(zhǔn)格式,后者為傳統(tǒng)格式,通常用前者。74.函數(shù)體:即函數(shù)功能的具體實(shí)現(xiàn)。它包括兩部分: 說明部分和執(zhí)行部分,其中說明部分包括函數(shù)中所用的局部變量等的說明、函數(shù)中要調(diào)用的函數(shù)的說明。注意:函數(shù)不能嵌套定義,即函數(shù)內(nèi)不能再定義函數(shù),這樣可以保證函數(shù)間是相互獨(dú)立的,以實(shí)現(xiàn)模塊化程序設(shè)計(jì)。5.空函數(shù): 函數(shù)類型 函數(shù)名( ) 調(diào)用此函數(shù)時(shí),什么也不做。只是表明這里要
3、調(diào)用一個(gè)函數(shù),而現(xiàn)在這個(gè)函數(shù)的功能還沒實(shí)現(xiàn)。8空函數(shù)在程 序設(shè)計(jì)中常常用到的:1)預(yù)留函數(shù),便于以后擴(kuò)充程序功能。2)便于程序的模塊化設(shè)計(jì)和調(diào)試:程序設(shè)計(jì)中往往根據(jù)需要確定若干模塊,分別由一些函數(shù)來實(shí)現(xiàn)。一個(gè)大系統(tǒng),需要編寫很多用戶函數(shù),而這些函數(shù)不可能 也沒有必要同步完成,通常足從一些基本模塊開始,編寫一個(gè)調(diào)試一個(gè),對(duì)于沒有編寫 的函數(shù)就需要用空函數(shù)代替。從而也有利于集體創(chuàng)作。 9空函數(shù)舉例例8.3 編寫小學(xué)生算術(shù)練習(xí)系統(tǒng)的主程序: 顯示主菜單,用戶選擇,根據(jù)選擇執(zhí)行加、減、乘、除、退出5項(xiàng)功能之一。 重復(fù)上述步驟,直至選擇退出。其中主程序調(diào)用的函數(shù)有:顯示主菜單函數(shù)list_menu(),
4、加、減、乘、除、退出函數(shù)分別是add(), sub(), mul(),divide(), end(). 以上函數(shù)除list_menu()外此時(shí)均為空函數(shù)。程序:l8_1_4.c10#include stdio.h /*l8_1_4.c*/main() void add(),sub(),mul(),divide(),end(),list_menu(); int n; do list_menu(); scanf(%d,&n); getchar(); switch(n) case 1: add(); break; case 2: sub(); break; case 3: mul(); break;
5、 case 4: divide(); break; case 5:end(); break; default:printf(n enter error,please again.); while(n!=5);11void list_menu()printf(n *the exercise system for primitive students*); printf(n * 1. add *); printf(n * 2. sub *); printf(n * 3. mul *); printf(n * 4. divide*); printf(n * 5. end *n);void add()
6、 void sub() void mul() void divide() void end() 12問題:如何定義一個(gè)函數(shù)第一步:分析函數(shù)需要的參數(shù),包括參數(shù)的的個(gè)數(shù)以及每個(gè)參數(shù)的類型, 第二步: 分析函數(shù)返回值的類型,若無返回值,則為 void。 函數(shù)的返回值可看作是函數(shù)執(zhí)行完后需輸出的一個(gè)數(shù)據(jù)。第三步:編寫函數(shù)體說明:參數(shù)和返回值是函數(shù)之間的接口,即函數(shù)之間通過參數(shù)和返回值進(jìn)行通信。參數(shù)包括執(zhí)行該函數(shù)時(shí)需要的數(shù)據(jù)信息,以及返回?cái)?shù)據(jù)的有關(guān)信息。13例如:1)求n!: 要處理的數(shù)據(jù)是n,因此必須有一個(gè)參數(shù)n,類型為 int。返回值為long 型。即 long fact( int n) 2)打印
7、表頭: 不需輸入任何數(shù)據(jù)即可執(zhí)行該函數(shù),因此無參數(shù)。執(zhí)行該函數(shù)無返回值,因此函數(shù)類型為 void。即 void line( ) 3)求兩個(gè)整數(shù)m和n的最小公倍數(shù),執(zhí)行該功能時(shí)必須有兩個(gè)整型參數(shù),返回值為整型。程序:l8_1_5.c int min_multiple(int m, int n) (見下頁)4)求一批整型數(shù)據(jù)(n個(gè))中的最大值。實(shí)現(xiàn)該功能的函數(shù)的參數(shù)有兩個(gè):該批數(shù)據(jù)的首地址及數(shù)據(jù)的個(gè)數(shù)。返回值為一個(gè)整型數(shù)。 int max( int data , int n) 14 /*例3: 計(jì)算兩個(gè)整數(shù)的最小公倍數(shù) l8_1_5.c*/main()int m, n , min; int min
8、_multiple( int, int ); /*函數(shù)聲明*/ printf(n input m,n:); scanf(%d%d,&m,&n); min=min_multiple(m,n); /*函數(shù)調(diào)用*/ printf(n bei shu:%d, min);int min_multiple(int x,int y) /*函數(shù)定義*/ int i; i=1; while(x*i%y!=0) i+; return(x*i);158.2 函數(shù)的調(diào)用重點(diǎn):1、對(duì)被調(diào)函數(shù)的聲明2、如何調(diào)用一個(gè)函數(shù)3、主調(diào)函數(shù)和被調(diào)函數(shù)之間如何進(jìn)行數(shù)據(jù)傳遞 例8.5 調(diào)用函數(shù)fact( )求n!(n由用戶輸入)。 分
9、三種情況:(1)函數(shù)fact()與主函數(shù)在同一文件中,且main( )在fact()前面。(2)函數(shù)fact()與主函數(shù)在同一文件中,且main在fact之后。(3)函數(shù)fact與main不再同一程序文件中。16main() /*(1) main( )在fact()前面 */int n; long p; long fact(int); /*函數(shù)聲明*/ scanf(%d,&n); p=fact(n); /*函數(shù)調(diào)用*/ printf(n %ld,p);long fact( int m) /*函數(shù)定義*/ int i; long s=1; for(i=1;i=m;i+) s*=i; return
10、(s); /*函數(shù)返回*/ 結(jié)論:被調(diào)函數(shù)在后,需在主調(diào)函數(shù)中先聲明后調(diào)用。17/* (2)主調(diào)函數(shù)在被調(diào)函數(shù)之后*/long fact( int m) /* 函數(shù)定義*/ int i; long s=1; for(i=1;i=m;i+) s*=i; return(s); main()int n; long p; /*不需函數(shù)聲明*/scanf(%d,&n); p=fact(n); /*函數(shù)調(diào)用*/ printf(n %ld,p);結(jié)論:被調(diào)函數(shù)先于主調(diào)函數(shù)被編譯,因此在編譯主調(diào)函數(shù)時(shí)已知被調(diào)函數(shù)的類型等信息。故不需函數(shù)聲明。18/*(3)設(shè)fact()函數(shù)存放在文件f1.c中,則編寫主調(diào)函數(shù)
11、時(shí)需用include 命令對(duì)被調(diào)函數(shù)聲明*/#include main()int n; long p; scanf(%d,&n); p=fact(n); printf(n %ld,p);結(jié)論:該程序的效果與(2)相同,由此可實(shí)現(xiàn)將多個(gè)文件連接成一個(gè)程序。同理,對(duì)庫函數(shù)的調(diào)用都要在main函數(shù)前用include命令將函數(shù)所在的頭文件包含進(jìn)來。19函數(shù)聲明小結(jié):被調(diào)函數(shù)必須是已存在的函數(shù),通過“函數(shù)聲明”告知編譯系統(tǒng)關(guān)于被調(diào)函數(shù)的有關(guān)信息。函數(shù)聲明的形式:函數(shù)類型 函數(shù)名(參數(shù)表); (注意與函數(shù)定義的區(qū)別)1、若被調(diào)函數(shù)是庫函數(shù)或用戶已編寫的函數(shù)(與主調(diào)函數(shù)不在同一文件中),則使用前需在程序的開
12、頭用include命令將被調(diào)函數(shù)的信息包含進(jìn)來。2、若主調(diào)函數(shù)與被調(diào)函數(shù)在同一文件內(nèi),且主調(diào)函數(shù)在前,則必須在主調(diào)函數(shù)的說明部分或主調(diào)函數(shù)的前面對(duì)被調(diào)函數(shù)進(jìn)行說明。3、以下情況下可以省略對(duì)被調(diào)函數(shù)的說明。 a)函數(shù)類型為整型 b)被調(diào)函數(shù)在主調(diào)函數(shù)之前定義通常,將所有函數(shù)的說明集中在程序開頭;或?qū)⑺泻瘮?shù)的信息寫入一個(gè)文件,編程時(shí)用include 命令將其包含進(jìn)來即可。20函數(shù)的調(diào)用與返回過程小結(jié)1、函數(shù)調(diào)用的一般形式: 函數(shù)名(實(shí)參表) 如 p=fact(n); printf(“%d”,power(2,n);等注意:實(shí)參與形參的類型、個(gè)數(shù)、順序必須一致。2、調(diào)用過程:1)在調(diào)用函數(shù)時(shí),首先將
13、實(shí)參的值賦給形參;再將控制流程轉(zhuǎn)到被調(diào)函數(shù);2)然后執(zhí)行被調(diào)函數(shù)。3)當(dāng)被調(diào)函數(shù)執(zhí) 行到return語句,或執(zhí)行到被調(diào)函數(shù)函數(shù)體最后的一個(gè)大花括號(hào)時(shí),控制流程返回到 主調(diào)函數(shù)的斷點(diǎn)處繼續(xù)執(zhí)行主調(diào)函數(shù)。如果被調(diào)函數(shù)有返回值,則控制流程返回的同時(shí)將該返回值帶回主調(diào)函數(shù)。213、函數(shù)的返回函數(shù)返回的實(shí)現(xiàn):1)函數(shù)體中通過執(zhí)行return語句返回,其格式有3種:return( expression); 或 return expression ; 或return;2)若函數(shù)體中無return語句,當(dāng)執(zhí)行到函數(shù)末尾時(shí)自動(dòng)返回到調(diào)用函數(shù)。注意:1)函數(shù)的返回值最多只有一個(gè),可通過return 語句返回主調(diào)函
14、數(shù)。2)當(dāng)有多個(gè)值需要返回主調(diào)函數(shù)時(shí),用return語句無法實(shí)現(xiàn),只能通過傳地址調(diào)用實(shí)現(xiàn)。如對(duì)數(shù)組元素排序等。224. 參數(shù)傳遞:實(shí)參與形參的結(jié)合形參:定義函數(shù)時(shí)的參數(shù)為形參,此時(shí)的參數(shù)無具體的值,僅僅表示參數(shù)的類型、個(gè)數(shù)、以及在函數(shù)體內(nèi)對(duì)其如何處理。 其作用是:該函數(shù)被調(diào)用時(shí)用來接收實(shí)參的值.實(shí)參;調(diào)用函數(shù)時(shí)的參數(shù)為實(shí)參,它表示該函數(shù)要處理的數(shù)據(jù)的信息,因此實(shí)參必須有確定的值。調(diào)用時(shí),將實(shí)參的值傳給形參。要求:調(diào)用函數(shù)時(shí),實(shí)參與形參的類型、個(gè)數(shù)必須完全一致。分析例8.4程序的調(diào)用過程:明確實(shí)參與形參的作用。(傳值調(diào)用:?jiǎn)蜗騻鬟f)23例8. 4以下程序企圖通過調(diào)用swap函數(shù),交換主函數(shù)中變量
15、x和y中的數(shù)據(jù)。請(qǐng)觀察程序的輸出結(jié)果。void s a, int b) int t; printf(2)a=%d b=%dn, a, b); t=a;a=b;b=t; printf(3)a=%d b=%dn, a, b);main() int x=10,y=20; printf(1)x=%d y=%dn, x, y); swap(x, y); printf(4)x=%d y=%dn, x, y);24程序運(yùn)行結(jié)果如下:(1)x=10 y=20(2)a=10 b=20(3)a=20 b=10(4)x=10 y=20 結(jié)論:參數(shù)的傳遞是單向的,即只能由實(shí)參傳給形參,在被調(diào)函數(shù)中對(duì)形參的改變的不影響
16、實(shí)參的值。25例8.12 編寫函數(shù)實(shí)現(xiàn):用選擇法對(duì)n個(gè)整數(shù)排序。編寫主函數(shù)實(shí)現(xiàn)數(shù)據(jù)的輸入輸出。分析:主程序的算法:S1:輸入一批數(shù)據(jù)(個(gè)數(shù)為N),存入一維數(shù)組aa。 S2:調(diào)用函數(shù)sort(),對(duì)一維數(shù)組中的數(shù)據(jù)按從小到大的順序排序。 S3:輸出數(shù)組aa中的各元素。函數(shù)sort()的編寫:首先,確定函數(shù)的類型:void;參數(shù):一維數(shù)組的首地址,數(shù)據(jù)的個(gè)數(shù),共2個(gè);然后編寫函數(shù)體,實(shí)現(xiàn)排序。重點(diǎn):分析參數(shù)的傳遞,比較傳值與傳地址的區(qū)別,各有何用處?(圖示:形參數(shù)組與實(shí)參數(shù)組的結(jié)合方式)26/*主函數(shù)*/#define N 10main() int aaN, i; void sort(int b
17、,int n); printf(n enter integers for sort;); for(i=0;iN;i+) scanf(%d,&aai); sort(aa,N); /*函數(shù)調(diào)用*/ printf(n after sort:n); for(i=0;iN;i+) printf(%6d,aai);/*函數(shù)sort()*/void sort(int b ,int n) int i,j,t,k; for(i=1;i=n-1;i+) k=0; for(j=1;j=n-i;j+) if(bk=6) even(a); /*函數(shù)調(diào)用語句*/ else printf(The %d isnt even
18、numbern,a); 32void even(int x) /*函數(shù)定義*/ int i; for(i=2;i=x/2;i+) if(isprime(i) if(isprime(x-i)printf(%d=%d+%dn,x,i,x-i); return ;int isprime(int a) /*函數(shù)定義*/ int i, k= sqrt(a); for(i=2; i1)規(guī)律 f(1)=1 (n=1)遞歸結(jié)束條件程序:l8_4_1.c分析程序的執(zhí)行過程,理解遞歸中的“遞進(jìn)”與“回推”。34main() /*程序:L8_4_1.c*/ int n; long p; long f(int); /
19、*對(duì)被調(diào)函數(shù)的聲明*/ printf(n input n:); scanf(%d,&n); p=f(n); /*函數(shù)調(diào)用*/ printf(n n!=%ld,p);long f(int m) / *函數(shù)定義*/ long t; if(m=1) t=1; else t=m*f(m-1); /*函數(shù)遞歸調(diào)用*/ return(t); /*函數(shù)的返回*/35類似的遞歸問題:1。猴子吃桃: int peach( int day) int n; if(d=10) n=1; else n=2*(peach(day+1)+1); return n; 2。猜年齡:第一個(gè)人說它比第二個(gè)人大4歲,第二個(gè)人說它比第
20、三個(gè)人大4歲,第三個(gè)人說它比第四個(gè)人大四歲,第四個(gè)人10歲,問:第一個(gè)人多大?368.5 局部變量和全局變量指變量的作用范圍不同。局部變量 :在函數(shù)體內(nèi)定義的變量。 作用范圍:只在本函數(shù)內(nèi)有效 如前面例題中的變量、數(shù)組等。全局變量 :在函數(shù)體外定義的變量 作用范圍:從定義該變量的位置開始,到本源程序文件結(jié)束。 37程序:/*全局變量x, y*/int x=100; float y=66.6; f1()float y=0; /*局部變量 y*/ printf(“x=%dt”,x); printf(“y=%ft”,y); int z=1; f2()int i; /*局部變量 i*/ for(i=1
21、;i5;i+) putchar(*); printf(n z=%dt ,z); /*全局變量 z 從 定義起至程序末起作用*/main()f1(); f2(); printf(“y=%fn”,y); /*輸出全局變量y*/ 運(yùn)行結(jié)果: x=100 y=0.000000 *z=1 y=66.600000/*全局變量x,y在本程序內(nèi)起作用*/*局部變量y的作用范圍內(nèi),全局變量y不作用*/38int d=1; /*全局變量d*/fun(int p)int d=5; /*局部變量d*/ d+=p+; /*使用局部變量d*/ printf(%d,d);main()int a=3; fun(a); d+=
22、a+; /*使用全局變量d*/ printf(%d,d); 運(yùn)行結(jié)果:84結(jié)論:在同一源程序文件中,若外部變量與局部變量同名,則在局部變量的作用范圍內(nèi),外部變量不起作用。39局部變量和全局變量小結(jié)局部變量:保證了函數(shù)之間的獨(dú)立性。(常用)全局變量:增加了函數(shù)之間數(shù)據(jù)傳遞的通道,但降低了函數(shù)間的獨(dú)立性,降低了程序的清晰性,因此副作用太大。除非特別需要時(shí),一般不用。占用內(nèi)存情況:局部變量?jī)H當(dāng)他所在的函數(shù)被調(diào)用時(shí)才存在,執(zhí)行完該函數(shù)返回后,該變量不再存在全局變量在程序的全部執(zhí)行過程中一直存在,直至程序執(zhí)行完,才釋放它所占的內(nèi)存空間408.6 變量的存儲(chǔ)類別變量和函數(shù)均有兩個(gè)屬性: 數(shù)據(jù)類型和存儲(chǔ)類別
23、存儲(chǔ)類別指數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式。根據(jù)變量的“生存期”不同,變量的存儲(chǔ)類別包含以下四種:自動(dòng)的 :auto靜態(tài)的: static寄存器的: register 外部的: extern41自動(dòng)的(auto)變量函數(shù)的形參和在函數(shù)中定義的變量(通常省略存儲(chǔ)類別,)即隱含指定為自動(dòng)變量。前面17章中的變量均屬自動(dòng)變量。自動(dòng)變量在需要時(shí)系統(tǒng)給他門分配存儲(chǔ)空間,在函數(shù)調(diào)用結(jié)束時(shí)自動(dòng)釋放這些存儲(chǔ)空間。例auto int a=2,b=3; 與int a=2,b=3;等價(jià)。42靜態(tài)的(static)1、靜態(tài)局部變量:作用域?yàn)楸竞瘮?shù)內(nèi)部存儲(chǔ)類別為靜態(tài)存儲(chǔ)類,因此其生存期與該函數(shù)所在程序運(yùn)行期間相同。即當(dāng)函數(shù)調(diào)用結(jié)
24、束時(shí)能保留原值,在下一次調(diào)用該函數(shù)時(shí)該變量的值是上一次函數(shù)調(diào)用結(jié)束時(shí)的值,直至程序運(yùn)行結(jié)束。例(next page)43func(int a,int b) /*例8.6.1*/static int m=0,i=2;/*靜態(tài)局部變量m,I*/ i+=m+1; m=i+a+b; return(m); main()int k=4,m=1,p; /*局部變量k,m,p*/ p=func(k,m); printf(%5d,p); p=func(k,m); printf(%5dn,p); 運(yùn)行結(jié)果: 8 17 /*圖示執(zhí)行過程中變量的存儲(chǔ)空間占用及值的變化情況*/44int d=1; /*全局變量d*/
25、/*例8.6.2*/fun(int p)static int d=5; /*靜態(tài)局部變量d*/ d+=p; printf(%5d,d);return(d);main()int a=3; /*自動(dòng)變量 a*/printf(%5dn,fun(a+fun(d);運(yùn)行結(jié)果: 6 15 1545Register 變量register int k; 則給變量k分配的空間為某個(gè)寄存器。優(yōu)點(diǎn):速度快。只有局部變量和形參可以定義為register變量。因?yàn)闄C(jī)器的寄存器數(shù)量有限,因此該類型不常用。46外部的(extern)變量用extern聲明外部變量,是為了擴(kuò)展外部變量的作用域。因外部變量不常用,因此exter
26、n也很少使用。必須使用外部變量時(shí),一般建議使用靜態(tài)全局變量。即在函數(shù)體外定義變量時(shí)存儲(chǔ)類別為:static 如 static int a=2; f( ) 變量 a的作用范圍僅限于本源程序文件內(nèi)。其它程序中即使用extern int a;聲明也不能引用a。478.7內(nèi)部函數(shù)與外部函數(shù)外部函數(shù):如不加特別說明,函數(shù)都是全局的,即外部的,一個(gè)函數(shù)可以調(diào)用另一文件中的函數(shù)。(項(xiàng)目文件的使用)內(nèi)部函數(shù):存儲(chǔ)類別為static,該函數(shù)僅限于本程序文件使用,其它程序不能調(diào)用之。48綜合題1編程實(shí)現(xiàn)小學(xué)生算術(shù)練習(xí)系統(tǒng):主菜單包括5項(xiàng)(加法、減法、乘法、除法、退出),前四項(xiàng)中每一項(xiàng)又包括子菜單(一級(jí)、二級(jí)、三級(jí)
27、、返回4項(xiàng)),其中一級(jí)實(shí)現(xiàn)10以內(nèi)的運(yùn)算,二級(jí)實(shí)現(xiàn)50以內(nèi)的整數(shù)運(yùn)算,三級(jí)實(shí)現(xiàn)100以內(nèi)的整數(shù)運(yùn)算;進(jìn)入某一級(jí)后,反復(fù)練習(xí)(由機(jī)器產(chǎn)生兩個(gè)隨機(jī)數(shù),用戶輸入運(yùn)算結(jié)果,輸出正確或錯(cuò)誤)待結(jié)束時(shí)給出本級(jí)題目中計(jì)算正確的百分比。要求每個(gè)功能分別用函數(shù)實(shí)現(xiàn)。程序:l8_t.c49綜合題2自動(dòng)閱卷程序:設(shè)單選題20個(gè)(2分/題),多選題20個(gè)(每題4個(gè)供選答案,3分/題,且只要與答案不一致即錯(cuò))。編寫函數(shù)實(shí)現(xiàn):閱單選題,閱多選題,閱一個(gè)人的答題;編寫主函數(shù)實(shí)現(xiàn)批閱N個(gè)人的答題卡(正確答案在主程序中輸入)。分析:Main(): 1)輸入正確答案,分別存入一維數(shù)組dd,二維數(shù)組ss; 2) 批閱N個(gè)人的答題(
28、用循環(huán)),將成績(jī)存入數(shù)組sc。3)輸出每個(gè)人的最后成績(jī)。Person(): 函數(shù)類型為int; 參數(shù)兩個(gè):dd,ss; 函數(shù)體:1)輸入某人的答案,分別存入dd1和ss1,2)分別調(diào)用函數(shù)single()和many()判別對(duì)錯(cuò)并計(jì)分,返回總成績(jī)。50Single():函數(shù)類型int ,參數(shù)dd,dd1; 函數(shù)體:統(tǒng)計(jì)數(shù)組dd與dd1中相同元素的個(gè)數(shù),乘2即得單選題的成績(jī),返回該成績(jī)。Many():函數(shù)類型int ,參數(shù)ss,ss1; 函數(shù)體:統(tǒng)計(jì)數(shù)組ss與數(shù)組ss1中對(duì)應(yīng)行元素相同的行數(shù),乘3即得多選題的成績(jī),并返回。然后分析各函數(shù)的具體實(shí)現(xiàn)算法。程序1:l8_3_2.c分析程序中的傳地址調(diào)用
29、,嵌套調(diào)用時(shí)程序的執(zhí)行過程。程序2:l8_3_2_q.c 定義存放正確答案的數(shù)組為全局的,則dd,ss將不作為參數(shù)使用。(一般情況使用參數(shù)傳遞)51#include stdio.h /*程序1*/#define N 400 /*num of person*/#define NUM 20 /*num of question*/main() char ddNUM+1,ssNUM+15; int scN+1,i; printf(n enter right answer of single select:n); printf(n(format:press enter after finished inputing all of answers.n); for(i=1;i=NUM;i+) ddi=getc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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年度光纜產(chǎn)品安全與可靠性測(cè)試合同
- 2025年度寄賣藝術(shù)品正規(guī)合同模板大全藝術(shù)品寄售升級(jí)版
- 2025年度禁毒教育展覽布展優(yōu)化與更新合同
- 2025年度攪拌樁施工環(huán)境監(jiān)測(cè)合同
- 2025年度新材料研發(fā)股份合同協(xié)議書范本
- 2025年度國(guó)土礦產(chǎn)資源保密與勘查合同
- 2025年度婚介服務(wù)合同(含婚姻關(guān)系維護(hù)培訓(xùn))
- 2025年度全球供應(yīng)鏈管理合同標(biāo)的物流優(yōu)化與成本控制
- 2025年度井蓋智能化管理系統(tǒng)集成合同
- 2025年度井筒工程地質(zhì)勘探與評(píng)價(jià)合同
- 2024年房地產(chǎn)行業(yè)的樓市調(diào)控政策解讀培訓(xùn)
- 《統(tǒng)計(jì)學(xué)-基于Python》 課件全套 第1-11章 數(shù)據(jù)與Python語言-時(shí)間序列分析和預(yù)測(cè)
- 《GMP實(shí)務(wù)教程》 完整全套教學(xué)課件 項(xiàng)目1-14 GMP基礎(chǔ)知識(shí)-藥品生產(chǎn)行政檢查
- 裝飾定額子目(河南省)
- 【高速鐵路乘務(wù)工作存在的問題及對(duì)策研究9800字】
- 北師大版英語課文同步字帖三年級(jí)下冊(cè)課文對(duì)話原文及翻譯衡水體英語字帖三年級(jí)起點(diǎn)
- GB/T 2550-2016氣體焊接設(shè)備焊接、切割和類似作業(yè)用橡膠軟管
- GB/T 21295-2014服裝理化性能的技術(shù)要求
- 2022年行業(yè)報(bào)告我國(guó)FEVE氟樹脂涂料發(fā)展現(xiàn)狀及展望
- 走向核心素養(yǎng)深度學(xué)習(xí)的教學(xué)實(shí)踐課件
- Y2系列電機(jī)樣本
評(píng)論
0/150
提交評(píng)論