C語(yǔ)言函數(shù)題庫(kù)及答案_第1頁(yè)
C語(yǔ)言函數(shù)題庫(kù)及答案_第2頁(yè)
C語(yǔ)言函數(shù)題庫(kù)及答案_第3頁(yè)
C語(yǔ)言函數(shù)題庫(kù)及答案_第4頁(yè)
C語(yǔ)言函數(shù)題庫(kù)及答案_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第六部分 函數(shù)一、單項(xiàng)選擇題1C語(yǔ)言中的函數(shù)返回值的類型是由(D)決定Areturn語(yǔ)句中的表達(dá)式 B調(diào)用函數(shù)的主調(diào)函數(shù)C調(diào)用函數(shù)時(shí)臨時(shí) D定義函數(shù)時(shí)所指定的函數(shù)類型2.下面不正確的描述是( B )。A 調(diào)用函數(shù)時(shí),實(shí)參可以是表達(dá)式B 調(diào)用函數(shù)時(shí),實(shí)參和形參可以共用內(nèi)存單元C 調(diào)用函數(shù)時(shí),將形參分配內(nèi)存單元D 調(diào)用函數(shù)時(shí),實(shí)參與形參的類型必須一致3.在C語(yǔ)言中,調(diào)用一個(gè)函數(shù)時(shí),實(shí)參變量和形參變量之間的數(shù)據(jù)傳遞是( D )A地址傳遞 B值傳遞C由實(shí)參傳遞給形參,并由形參傳回給實(shí)參 D由用戶指定傳遞方式4.下面的函數(shù)調(diào)用語(yǔ)句中含有( A )個(gè)實(shí)參int a,b,c;int sum(int x1,i

2、nt x2);total=sum(a,b),c);A2 B3 C4 D5 5.在C語(yǔ)言中( C )A 函數(shù)的定義可以嵌套,但函數(shù)的調(diào)用不可以嵌套B 函數(shù)的定義和調(diào)用均不可以嵌套C 函數(shù)的定義不可以嵌套,但是函數(shù)的調(diào)用可以嵌套D 函數(shù)的定義和調(diào)用均可以嵌套6.關(guān)于語(yǔ)言中的return語(yǔ)句正確的是(C )A 只能在主函數(shù)中出現(xiàn)B 在每個(gè)函數(shù)中都必須出現(xiàn)C 可以在一個(gè)函數(shù)中出現(xiàn)多次D 只能在除主函數(shù)之外的函數(shù)中出現(xiàn)7.兩個(gè)形參中,第一個(gè)形參為指針類型、第二個(gè)形參為整型,則對(duì)函數(shù)形參的說(shuō)明有錯(cuò)誤的是( D) A. int a(float x,int n) B. int a(float *x,int n

3、) C. int a(float x10,int n) D.int a(float x,int n) 8.在C語(yǔ)言中,函數(shù)的數(shù)據(jù)類型是指( A ) A.函數(shù)返回值的數(shù)據(jù)類型 B. 函數(shù)形參的數(shù)據(jù)類型 C.調(diào)用該函數(shù)時(shí)的實(shí)參的數(shù)據(jù)類型 D. 任意指定的數(shù)據(jù)類型 9.已知如下定義的函數(shù): fun1(a) printf("n%d",a); 則該函數(shù)的數(shù)據(jù)類型是( C ) A與參數(shù)a的類型相同 Bvoid型 C 整型 D 無(wú)法確定 10.定義一個(gè)函數(shù)實(shí)現(xiàn)交換x和y的值,并將結(jié)果正確返回。能夠?qū)崿F(xiàn)此功能的是( D ) A. swapa(int x,int y) int temp; t

4、emp=x;x=y;y=temp; B. swapb(int *x,int *y) int temp; temp=x;x=y;y=temp; C.swapc(int *x,int *y) int temp; temp=*x;*x=*y;*y=temp; D. swapd(int *x,int *y) int *temp; temp=x;x=y;y=temp; 11.求一個(gè)角的正弦函數(shù)值的平方。能夠?qū)崿F(xiàn)此功能的函數(shù)是(B) A. sqofsina(x) float x; return(sin(x)*sin(x); B. double sqofsinb(x) float x; return(sin

5、(double)x)*sin(double)x); C.double sqofsinc(x) return(sin(x)*sin(x); D. sqofsind(x) float x; return(double(sin(x)*sin(x); 12.已知函數(shù)定義如下: float fun1(int x,int y) float z; z=(float)x/y; return(z); 主調(diào)函數(shù)中有int a=1,b=0;可以正確調(diào)用此函數(shù)的語(yǔ)句是(D ) A.printf("%f",fun1(a,b); B. printf("%f",fun1(&a

6、,&b); C. printf("%f",fun1(*a,*b); D.調(diào)用時(shí)發(fā)生錯(cuò)誤 13.下面函數(shù)的功能是( B ) a(s1,s2) char s1,s2; while(s2+=s1+) ; A.字符串比較 B.字符串復(fù)制 C. 字符串連接 D. 字符串反向 二、填空題1.在C語(yǔ)言中,存儲(chǔ)類型為 局部和自動(dòng)型的變量,只能在使用它們時(shí)才占用存儲(chǔ)空間。2.在一個(gè)源文件中定義的全局變量的作用域?yàn)檎麄€(gè)源程序。3.下面程序的執(zhí)行結(jié)果是84 int d=1;fun(int p)int d=5;d+=p+;printf(“%d”,d);main() int a=3;fun(

7、a); d+=a+;printf(“%d”,d); 4.該fun函數(shù)的功能是求10的階乘。1) #include 2) long fun ( int n)3) if (_1_)4) return (n*fun(_2_);5) else if ( _3_)6) return 1;第一處:n>1第二處:n-1·第三處:n=1解析:從第2、4行看到了函數(shù)名,函數(shù)體中又出現(xiàn)了函數(shù)的調(diào)用,則是遞歸。我們知道:n!=n*(n-1)! 這就是一個(gè)遞歸的表達(dá)式,寫成函數(shù)就是fun(n)=n*fun(n-1)。因此,4行處填寫n-1。又:1!=1 故3,5行就好填了。因此答案是 n>1 n

8、-1 n=1。還有 0!=1 故,還可填寫:n>0 n-1 n=0注意:3 5行的條件是相反的,這也是if與else條件的互斥性。5. 程序的功能是計(jì)算s=1!+2!+3!+n!1) long fun(int n)2) int i;3) long s;4) s=_1_;5) for (i=1; i<=n; i+)6) s=_2_;7) return s;8) 9) main()10) long s;11) int k,n;12) scanf("%d",&n);13) s=_3_;14) for (k=1; k<=n; k+)15) s=_4_;16

9、) printf("%ldn", s);17) 第一處:1第二處:s*i第三處:0第四處:s+fun(k)解析:首先,搞清楚函數(shù)fun、 main各自的功能。Fun是求一個(gè)數(shù)的階乘,我們知道: n!=1*2*3*n同時(shí)要死記住:求積,積的初值一般等于1。故fun中s是用來(lái)存放積的,其初值等于1;求階乘是連乘,故s=s*iMain是求和,記?。汉偷某踔狄话愕扔?.兩個(gè)函數(shù)中的局部變量s的作用是不同的。Main中的s是存放和的。最后:注意一些變量的類型。階乘是求積,積的增長(zhǎng)速度是比較快的,為防止溢出,fun的返回值類型是long。 輸出中 ld 是輸出長(zhǎng)整數(shù)。6. 請(qǐng)?jiān)诤瘮?shù)fu

10、n的橫線上填寫若干個(gè)表達(dá)式,使從鍵盤上輸入一個(gè)整數(shù)n,輸出斐波納契數(shù)列。斐波契數(shù)列是一種整數(shù)數(shù)列,其中每數(shù)等于前兩數(shù)之后,如: 0 1 1 2 3 5 8 131) int fun(int n)2) if(_1_)3) return 0;4) else if(_2_)5) return 1;6) else7) return_3_;8) 第一處:n=0第二處:n=1第三處:fun(n-1)+fun(n-2)解析:求斐波契數(shù)列:一項(xiàng)等于其前兩項(xiàng)的和。這也是一個(gè)遞歸。求斐波契數(shù)列的第n項(xiàng)的值,n從0開始。7. 請(qǐng)補(bǔ)全函數(shù)fun,該函數(shù)的功能是求出以下分?jǐn)?shù)序列的前n項(xiàng)之和。和值通過(guò)函數(shù)值返回到main

11、函數(shù)。1) #include2) #include3) _1_ fun(int n)4) int a,b,c,k;5) double s;6) s=0.0;7) a=2;8) b=1;9) for(k=1;k<=n;k+)10) 11) s=s+(_2_)a/(_3_)b;12) c=a;13) a=a+b;14) b=c;15) 16) return s;17) 第一處:double第二處:double第三處:double解析:從第11-14總結(jié)出數(shù)列的表達(dá)式。第1項(xiàng)是a/b=2/1;3/2 4/3故:s=2/1+3/2+4/3+ 和的初值是0。記?。簝蓚€(gè)整數(shù)進(jìn)行算術(shù)運(yùn)算結(jié)果也是整數(shù),

12、算術(shù)運(yùn)算中只要有一個(gè)操作數(shù)是實(shí)數(shù),運(yùn)算結(jié)果就是實(shí)數(shù)。本題希望結(jié)果是實(shí)數(shù),故要進(jìn)行強(qiáng)制類型轉(zhuǎn)換,2,3只要有一個(gè)進(jìn)行強(qiáng)制轉(zhuǎn)換就可以了。最后,函數(shù)需要有一個(gè)返回值類型,當(dāng)然也是雙精度浮點(diǎn)數(shù)了。8. 給定程序的功能是計(jì)算并輸出下列級(jí)數(shù)的前N項(xiàng)之和SN,直到SN大于q為止,q的值通過(guò)形參傳入。1) double fun( double q )2) int n;3) double s;4) n = 2;5) s = 2.0;6) while (s _1_ q)7) 8) s=s+(double)(n+1)/n;9) _2_ ;10) 11) printf("n=%dn",n);12)

13、 _3_ ;13) 第一處:s <= q第二處:n+第三處:return s解析:從第8行,從數(shù)學(xué)的角度總結(jié)出數(shù)列的表達(dá)式。(n+1)/n n從2開始,每次增加1,故:SN=2+3/2+4/3+ 和的初值是2.0循環(huán)條件是“SN大于q為止” ,while是滿足條件才循環(huán),故填寫s <= q最后,函數(shù)需要有一個(gè)返回值。9. 給定程序功能是計(jì)算S=f(-n)+f(-n+1)+f(0)+f(1)+f(2)+f(n)的值。float f( double x)if (x = 0.0 | x = 2.0)return _1_;else if (x < 0.0)return (x -1)/

14、(x-2);elsereturn (x +1)/(x-2);double fun( int n )int i; double s=0.0, y;for (i= -n; i<=_2_; i+) y=f(1.0*i); s += y; return _3_;main ( )printf("%fn", fun(5) );第一處:0.0第二處:n第三處:s解析:函數(shù)f ( double x) 求每個(gè)單項(xiàng)的值。 ifelse的條件是互斥的。fun( ) 是求和。10.給定程序的功能是計(jì)算score中m個(gè)人的平均成績(jī)aver,將低于aver的成績(jī)放在below中,通過(guò)函數(shù)名返回人

15、數(shù)。int fun(int score, int m, int below)int i, j = 0 ;float aver = 0.0 ;for(i = 0 ; i < m ; i+) aver += scorei ;aver /= (float) m ;for(i = 0 ; i < m ; i+)if(scorei < aver) belowj+ = _1_ ;return j ;main()int i, n, below9 ;int score9 = 10, 20, 30, 40, 50, 60, 70, 80, 90 ;n = fun(score, 9, _2_)

16、;printf( "nBelow the average score are: " ) ;for (i = 0 ; i < n ; i+) printf("%d ", _3_) ;第一處:scorei第二處:below第三處:belowi解析:求平均值,應(yīng)先求和。此處,和 與平均值使用了同一個(gè)變量。Score 是原來(lái)的成績(jī),Below【 】存放低于平均分的分?jǐn)?shù),還有人數(shù)。Below的長(zhǎng)度一定不大于score的長(zhǎng)度。Below的長(zhǎng)度必須通過(guò)計(jì)數(shù)才能得到,且是在比較的過(guò)程中得到的。Below數(shù)組的長(zhǎng)度用j來(lái)計(jì)數(shù),其初值當(dāng)然為0。Fun函數(shù)中:先求總分,

17、平均分;再比較,比平均分低,存于below,j+。J是后加,不能錯(cuò)了。函數(shù)fun的返回值賦值給n,n就是below數(shù)組的長(zhǎng)度。11. 在主函數(shù)中從鍵盤輸入若干個(gè)數(shù)放入數(shù)組x中,用0結(jié)束輸入但不計(jì)入數(shù)組。下列給定程序中,函數(shù)fun功能是:輸出數(shù)組元素中小于平均值的元素。void fun(_1_,int n)double sum=0.0;double average=0.0;int i=0;for(i=0;i<N;I+)< p> _2_;average=_3_;for (i=0;i<N;I+)< p> if(xi<AVERAGE)< p> if

18、(i%5=0)printf("n");printf("%d, ",xi);第一處:int x第二處:sum+=xi第三處:sum/n解析:算法思想同上題12.請(qǐng)補(bǔ)全fun函數(shù),該函數(shù)的功能是求不超過(guò)給定自然數(shù)的各個(gè)偶數(shù)之和。int fun(int x)int i,s;s=_1_;for(_2_)s+=i;return s;第一處:0第二處:i=2; i 解析:求和,和的初值s為0。最小的非負(fù)偶數(shù)是0,偶數(shù)間的大小關(guān)系是相差2。13. 請(qǐng)補(bǔ)全main函數(shù),該函數(shù)的功能是:計(jì)算并輸出下列多項(xiàng)式的值。S=1+1/(1+2)+1/(1+2+3)+1/(1+2+3

19、+50)#include _1_ fun(int n)int i,j;double sum=0.0,t;for(i=1;i<=n;i+)t=0.0;for(j=1;j<=i;j+)t+= _2_;sum+= _3_;return sum;第一處:double第二處:j第三處:1.0/t解析:S中的每一項(xiàng)的分母是1+2+3+i 需要用一個(gè)一重循環(huán)實(shí)現(xiàn),把所有商相加,需要用一個(gè)循環(huán);組合起來(lái)整個(gè)就需要二重循環(huán)。內(nèi)循環(huán)求每個(gè)單項(xiàng)的和,外循環(huán)求商的和。每單項(xiàng)的分子是1,應(yīng)該用浮點(diǎn)數(shù)1.0;每單項(xiàng)的分母是求和,和的初值為0.0;函數(shù)的返回值是浮點(diǎn)數(shù)。14. 請(qǐng)補(bǔ)全main函數(shù),該函數(shù)的功能是

20、,計(jì)算兩個(gè)自然數(shù)n和m(m<10000)之間所有數(shù)的和。n和m從鍵盤輸入。main()int n,m;long sum;_1_;clrscr();printf("nInput n,mn");scanf("%d,%d",&n,&m);while( n<=m )_2_;n+;printf("sum=% _3_n",sum);第一處:sum=0第二處:sum += n第三處:ld解析:求和問(wèn)題15.請(qǐng)補(bǔ)全main函數(shù),該函數(shù)的功能是:從鍵盤上輸入3個(gè)整數(shù),然后找出最大的數(shù)并輸出。main()int a,b,c,max;clrscr();printf("nInput three numbers:n");scanf("%d,%d,%d",&a,&b,&c);printf("Thethree numbers are

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論