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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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函數的功能敘述中,正確的是【 】。 int fun(char *s) char *t=s; while(*t+) ; t-; return(t-s); A) 求字符串s的長度 B) 比較兩個串的大小 C) 將串s復制到串tD) 求字符串s所占字節數 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. 以下程序的功能是計算函數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. 以下程序的功能是根據輸入的字母,在屏幕上顯示出字符數組中首字符與其相同的字符串,若不存在,則顯示“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. 以下程序實現了計算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. 以下程序實現了求兩個數的最大公約數,請將程序填寫完整。 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. 以下函數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. 以下程序的功能是:刪去一維數組中所有相同的數,使之只剩一個。數組中的數已按小到大的順序排列,函數返回刪除后數組中數據的個數。請將程序填寫完整。 例如,若一維

17、數組中的數據是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10刪除后,數組中的內容應該是: 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. 請用自定義函數的形式編程實現,求s=m!+n!+k!,m、n、k從鍵盤輸入。 2. 請用

18、自定義函數的形式編程實現求10名學生1門課程成績的平均分。 3. 請編寫兩個自定義函數,分別實現求兩個整數的最大公約數和最小公倍數,并用主函數調用這兩個函數,輸出結果。 4. 已知二階Fibonacci數列: 0 Fib(n) 若n=0 1若n=1 Fib(n-1)+Fib(n-2)其他情況 請編寫一個遞歸函數,實現求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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論