函數(shù)練習題(C語言)帶答案_第1頁
函數(shù)練習題(C語言)帶答案_第2頁
函數(shù)練習題(C語言)帶答案_第3頁
函數(shù)練習題(C語言)帶答案_第4頁
函數(shù)練習題(C語言)帶答案_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上函數(shù)練習題(C語言)帶答案C語言函數(shù)練習題 一、選擇題 1. 一個完整的C源程序是【 】。 A)要一個主函數(shù)或一個以上的非主函數(shù)構成 B)一個且僅一個主函數(shù)和零個以上的非主函數(shù)構成C)要一個主函數(shù)和一個以上的非主函數(shù)構成 D)一個且只有一個主函數(shù)或多個非主函數(shù)構成 2. 以下關于函數(shù)的敘述中正確的是【 】。 A)C語言程序將從源程序中第一個函數(shù)開始執(zhí)行 B)可以在程序中用戶指定任意一個函數(shù)作為主函數(shù),程序將從此開始執(zhí)行 C)C語言規(guī)定必須用main作為主函數(shù)名,程序將從此開始執(zhí)行,在此結束 D)main可作為用戶標識符,用以定義任意一個函數(shù) 3. 以下關于函數(shù)的敘述中

2、不正確的是【 】。 A)C程序是函數(shù)的集合,包括標準庫函數(shù)和用戶自定義函數(shù) B)在C語言程序中,被調用的函數(shù)必須在main函數(shù)中定義 C)在C語言程序中,函數(shù)的定義不能嵌套 D)在C語言程序中,函數(shù)的調用可以嵌套 4. 在一個C程序中,【 】。 A)main函數(shù)必須出現(xiàn)在所有函數(shù)之前 B)main函數(shù)可以在任何地方出現(xiàn) C)main函數(shù)必須出現(xiàn)在所有函數(shù)之后D)main函數(shù)必須出現(xiàn)在固定位置 5. 若在C語言中未說明函數(shù)的類型,則系統(tǒng)默認該函數(shù)的數(shù)據(jù)類型是【 】 A)floatB)long C)int D)double 6. 以下關于函數(shù)敘述中,錯誤的是【 】。 A)函數(shù)未被調用時,系統(tǒng)將不為

3、形參分配內存單元 B)實參與形參的個數(shù)應相等,且實參與形參的類型必須對應一致 C)當形參是變量時,實參可以是常量、變量或表達式 D)形參可以是常量、變量或表達式 7. C程序中各函數(shù)之間可以通過多種方式傳遞數(shù)據(jù),下列不能用于實現(xiàn)數(shù)據(jù)傳遞的方式是【 】。 A)參數(shù)的形實結合 B)函數(shù)返回值 C)全局變量 D)同名的局部變量 8. 若函數(shù)調用時參數(shù)為基本數(shù)據(jù)類型的變量,以下敘述正確的是【 】。 A)實參與其對應的形參共占存儲單元 B)只有當實參與其對應的形參同名時才共占存儲單元 C)實參與對應的形參分別占用不同的存儲單元 D)實參將數(shù)據(jù)傳遞給形參后,立即釋放原先占用的存儲單元 9. 函數(shù)調用時,當

4、實參和形參都是簡單變量時,他們之間數(shù)據(jù)傳遞的過程是【 】。 A)實參將其地址傳遞給形參,并釋放原先占用的存儲單元 B)實參將其地址傳遞給形參,調用結束時形參再將其地址回傳給實參 C)實參將其值傳遞給形參,調用結束時形參再將其值回傳給實參 D)實參將其值傳遞給形參,調用結束時形參并不將其值回傳給實參 10. 若函數(shù)調用時的實參為變量時,以下關于函數(shù)形參和實參的敘述中正確的是【 】。 A)函數(shù)的實參和其對應的形參共占同一存儲單元 B)形參只是形式上的存在,不占用具體存儲單元 C)同名的實參和形參占同一存儲單元 D)函數(shù)的形參和實參分別占用不同的存儲單元 11. 若用數(shù)組名作為函數(shù)調用的實參,則傳遞

5、給形參的是 【 】。 A) 數(shù)組的首地址B) 數(shù)組的第一個元素的值C) 數(shù)組中全部元素的值D) 數(shù)組元素的個數(shù) 12. 若函數(shù)調用時,用數(shù)組名作為函數(shù)的參數(shù),以下敘述中正確的是【 】。 A)實參與其對應的形參共用同一段存儲空間 B)實參與其對應的形參占用相同的存儲空間 C)實參將其地址傳遞給形參,同時形參也會將該地址傳遞給實參 D)實參將其地址傳遞給形參,等同實現(xiàn)了參數(shù)之間的雙向值的傳遞 13. 如果一個函數(shù)位于C程序文件的上部,在該函數(shù)體內說明語句后的復合語句中定義了一個變量,則該變量【 】。 A)為全局變量,在本程序文件范圍內有效 B)為局部變量,只在該函數(shù)內有效 C)為局部變量,只在該復

6、合語句中有效 D)定義無效,為非法變量 14. C語言中函數(shù)返回值的類型是【 】決定。A)return語句中的表達式類型B)調用函數(shù)的主調函數(shù)類型C)調用函數(shù)時臨時 D)定義函數(shù)時所指定的函數(shù)類型 15. 若在一個C源程序文件中定義了一個允許其他源文件引用的實型外部變量a,則在另一文件中可使用的引用說明是【 】。 A)extern static float a; B)float a; C)extern auto float a; D)extern float a; 16. 定義一個void型函數(shù)意味著調用該函數(shù)時,函數(shù)【 】 A)通過return返回一個用戶所希望的函數(shù)值 B)返回一個系統(tǒng)默認

7、值 C)沒有返回值 D)返回一個不確定的值 17. 若定義函數(shù)float *fun( ),則函數(shù)fun的返回值為【 】。 A)一個實數(shù) B)一個指向實型變量的指針 C)一個指向實型函數(shù)的指針 D)一個實型函數(shù)的入口地址 18. C語言規(guī)定,程序中各函數(shù)之間【 】。 A)既允許直接遞歸調用也允許間接遞歸調用 B)不允許直接遞歸調用也不允許間接遞歸調用 C)允許直接遞歸調用不允許間接遞歸調用 D)不允許直接遞歸調用允許間接遞歸調用 19. 若程序中定義函數(shù) float myadd(float a, float b) return a+b; 并將其放在調用語句之后,則在調用之前應對該函數(shù)進行說明。以

8、下說明中錯誤的是【 】。 A)float myadd( float a,b); B)float myadd(float b, float a); C)float myadd(float, float); D)float myadd(float a, float b); 20. 關于以下fun函數(shù)的功能敘述中,正確的是【 】。 int fun(char *s) char *t=s; while(*t+) ; t-; return(t-s); A) 求字符串s的長度 B) 比較兩個串的大小 C) 將串s復制到串tD) 求字符串s所占字節(jié)數(shù) 21. 下面程序段運行后的輸出結果是【 】 int a,

9、b; void swap( ) int t; t=a; a=b; b=t; main() scanf( swap( );printf ( A) a=5,b=3 B) a=3,b=5 22. 以下程序運行后的輸出結果是【 】。 fun(int a, int b) if(a>b) return a; else return b; main() int x=3,y=8,z=6,r; r=fun(fun(x,y),2*z); C)5,3D)3,5 printf( A) 3 B) 6 C) 823. 以下程序的運行結果是【 】。 void f(int a, int b) int t; t=a; a

10、=b; b=t; main() int x=1, y=3, z=2; if(x>y) f(x,y); else if(y>z) f(x,z);else f(x,z); printf( A) 1,2,3 B) 3,1,2 C) 1,3,2 24. 以下程序運行后的輸出結果為【 】。 int *f(int *x, int *y) if(*xmain() int a=7,b=8,*p,*q,*r; p=&a, q=&b; r=f(p,q); printf( A) 7,8,8 B) 7,8,7 C) 8,7,7 25. 以下程序的正確運行結果是【 】。 #inclued m

11、ain() int k=4,m=1,p; p=func(k,m);printf(“%d”,p); p=func(k,m); printf(“%dn”,p); func(int a,int b) D) 12 D) 2,3,1 D) 8,7,8 static int m=0,i=2; i+=m+1; m=i+a+b; return (m); A)8,17B)8,16C)8,20D)8,8 26. 以下程序的功能是計算函數(shù)F(x,y,z)=(x+z)/(y-z)+(y+2×z)/(x-2×z)的值,請將程序補充完整。 #include float f(float x,float

12、y) float value; value= 【1】; return value; main() float x,y,z,sum; scanf( sum=f(x+z,y-z)+f(【2】); printf( 【1】A) x/y B) x/z C) (x+z)/(y-z) D) x+z/y-z 【2】A) y+2z,x-2z B) y+z,x-z C) x+z,y-z D) y+z*z,x-2*z 27. 以下程序的功能是根據(jù)輸入的字母,在屏幕上顯示出字符數(shù)組中首字符與其相同的字符串,若不存在,則顯示“No find,good bye!”,請將程序補充完整。 #include char PriS

13、tr(char ch1) int i=0,j=0; static char *ch2=are youto meet younew while(i+if(ch1=【1】 ) puts(【2】);j=1; return j; main() char ch; printf( ch=getchar(); 5. #include void fun(int *s, int m, int n) int t; while(mt=sm; sm=sn; sn=t; m+; n-; main() Int a5=1,2,3,4,5,k; fun(a,0,4); for(k=0;k6. int fun(char s)

14、int n=0; while(*s=0) n=10*n+*s-0; s+; return(n); main() char s10=6,1,*,4,*,9,*,0,*; printf( 7. #include Int fun(int x) int y; if(x=0|x=1) return(3); y=x*x-fun(x-2) return y; main() int x,y; x=fun(3);y=fun(4); printf( 8. fun(int n,int *s) int f1, f2; if(n=1 | n=2) *s=1; else fun(n-1, &f1); fun(n-

15、2, &f2); *s=f1+f2; main() int x; fun(6,&x); printf( 三、填空題 1. 以下程序實現(xiàn)了計算x的n次方,請將程序填寫完整。 float power(float x,int n) int i; float t=1; for(i=1;imain( ) float x,y; int n;scanf( y=power(x,n); printf( 2. 以下程序實現(xiàn)了求兩個數(shù)的最大公約數(shù),請將程序填寫完整。 int divisor(int a,int b) int r; r=a%b; while(【2】) a=b;b=r;r=a%b; re

16、turn b; void main() int a,b,d,t; scanf(if (a t=a; a=b; b=t; d=divisor(a,b); printf( 3. 以下函數(shù)my_cmp( )的功能是比較字符串s和t的大小,當s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,s while(*s = *t) if (【3】) return 0;+s; +t; return 【4】; 4. 以下程序的功能是:刪去一維數(shù)組中所有相同的數(shù),使之只剩一個。數(shù)組中的數(shù)已按小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。請將程序填寫完整。 例如,若一維

17、數(shù)組中的數(shù)據(jù)是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10刪除后,數(shù)組中的內容應該是: 2 3 4 5 6 7 8 9 10。 #include #define N 80 int fun(int a, int n) int i,j=1; for(i=1;imain( ) int aN=2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,i,n=19; printf( for(i=0;iprintf( for(i=0; i四、編程題 1. 請用自定義函數(shù)的形式編程實現(xiàn),求s=m!+n!+k!,m、n、k從鍵盤輸入。 2. 請用

18、自定義函數(shù)的形式編程實現(xiàn)求10名學生1門課程成績的平均分。 3. 請編寫兩個自定義函數(shù),分別實現(xiàn)求兩個整數(shù)的最大公約數(shù)和最小公倍數(shù),并用主函數(shù)調用這兩個函數(shù),輸出結果。 4. 已知二階Fibonacci數(shù)列: 0 Fib(n) 若n=0 1若n=1 Fib(n-1)+Fib(n-2)其他情況 請編寫一個遞歸函數(shù),實現(xiàn)求Fib(n)。 第6章 一、選擇題1. B 2. 11. A 12. 21. A 22. 27.【2】D 30. A 33.【3】A 36.【1】D 38.【1】C 40.【1】C 1. 2. 3. 4. 5. 6. 7. 8. C 3. B A 13. C D 23. C 27

19、.【3】C 31. D 34.【1】D 36.【2】B 38.【2】B 40.【2】B 4. B 5. 14. D 15. 24. B 25. 28.【1】D 32.【1】B 34.【2】C 36.【3】A 38.【3】A 40.【3】D C 6. D 7. D 8. C 9. D 10. D D 16. C 17. B 18. A 19. A 20. A A 26.【1】A 26.【2】D 27.【1】B 28.【2】C 29.【1】C 29.【2】D 32.【2】A 33.【1】C 33.【2】B 35.【1】C 35.【2】A 35.【3】B 37.【1】A 37.【2】B 37.【3】

20、A 39.【1】C 39.【2】B 39.【3】A 二、讀程序寫結果: 31 15 asd af aa z67 *p1=20,*p2=10 x=10,y=20 5 4 3 2 1 61 6,15 8 三、填空題 1【1】 return t 2【2】 r!=0 3【3】 *s = ?0? 【4】 *s-*t 4【5】 !=【6】 j 四、編程題 1. #include long fun(int x) long y=1; while(x>0) y*=x; x-; return(y); main() int m,n,k; printf(scanf(printf( 2 #include #define N 10 float average(float array) int i=0; float s=0; for(i=0;imain() float scoreN,i; float ave; printf( for(i=0;i scanf( ave=average(score); pri

溫馨提示

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

評論

0/150

提交評論