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

下載本文檔

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

文檔簡介

1、m函數(shù)題庫及答案Company Document number : WTUT-WT88Y-W8BBGB-BWYTT-19998第六部分函數(shù)一、單項選擇題1 .C語言中的函數(shù)返回值的類型是由(D)決定A - return語句中的表達式B .調(diào)用函數(shù)的主調(diào)函數(shù)C ,調(diào)用函數(shù)時臨時D .定義函數(shù)時所指定的函數(shù)類型2 .下面不正確的描述是(B)。A.調(diào)用函數(shù)時,實參可以是表達式B .調(diào)用函數(shù)時,實參和形參可以共用內(nèi)存單元C .調(diào)用函數(shù)時,將形參分配內(nèi)存單元D.調(diào)用函數(shù)時,實參與形參的類型必須一致3 .在C語言中,調(diào)用一個函數(shù)時,實參變量和形參變量之間的數(shù)據(jù)傳遞是(D)A.地址傳遞B.值傳遞C.由實參傳

2、遞給形參,并由形參傳回給實參D.由用戶指定傳遞方式4 .下面的函數(shù)調(diào)用語句中含有(A)個實參inta, b, c;intsum(intxl, intx2);total=sum( (a, b), c);A . 2B . 3C . 4 D . 55 .在C語言中(C)A.函數(shù)的定義可以嵌套,但函數(shù)的調(diào)用不可以嵌套B .函數(shù)的定義和調(diào)用均不可以嵌套C .函數(shù)的定義不可以嵌套,但是函數(shù)的調(diào)用可以嵌套D .函數(shù)的定義和調(diào)用均可以嵌套6 .關(guān)于C語言中的return語句正確的是(C)A.只能在主函數(shù)中出現(xiàn)B .在每個函數(shù)中都必須出現(xiàn)C .可以在一個函數(shù)中出現(xiàn)多次D .只能在除主函數(shù)之外的函數(shù)中出現(xiàn)7 .兩

3、個形參中,第一個形參為指針類型、第二個形參為整型,則對函數(shù)形參的說明有錯誤的是(D)(floatx, intn)(float*x, intn)(floatx10, intn)(floatx, intn)8 .在C語言中,函數(shù)的數(shù)據(jù)類型是指(A)A.函數(shù)返回值的數(shù)據(jù)類型B.函數(shù)形參的數(shù)據(jù)類型C.調(diào)用該函數(shù)時的實參的數(shù)據(jù)類型D.任意指定的數(shù)據(jù)類型9 .已知如下定義的函數(shù):funl(a)printf(n%d,a);)則該函數(shù)的數(shù)據(jù)類型是(C)A.與參數(shù)a的類型相同B . void 型C .整型D.無法確定10 .定義_個函數(shù)實現(xiàn)交換x和y的值,并將結(jié)果正確返回。能夠?qū)崿F(xiàn)此功能的是(intx, int

4、y)inttemp ;temp=x ; x=y ; y=temp ;)(int*x, int*y)inttemp ;temp=x ; x=y ; y=temp ;(int*x, int*y)inttemp ;temp=*x ; *x=*y ; *y=temp ;)(int*x, int*y)int*temp ;temp=x ; x=y ; y二temp ;11 .求一個角的正弦函數(shù)值的平方。能夠?qū)崿F(xiàn)此功能的函數(shù)是(B)A.sqofsina(x)floatx ;return(sin(x)*sin(x);(x)floatx ;return(sin(double)x)*sin(double)x);(

5、x)return(sin(x)*sin(x);)(x)floatx ;return (double(sin(x)*sin(x);12 .已知函數(shù)定義如下:floatfunl(intx, inty)floatz ;z=(float)x/y ;return(z);)主調(diào)函數(shù)中有inta=l,b=0 ;可以正確調(diào)用此函數(shù)的語句是(D)(f ,funl (a, b) ; ("%f ,funl (&a, &b);funl (*a, *b) ; D.調(diào)用時發(fā)生錯誤13.下面函數(shù)的功能是(B)a (si, s2)charsl , s2;while(s2+=sl+);A.字符串比較B

6、.字符串復(fù)制C.字符串連接D.字符串反向二、填空題1 .在C語言中,存儲類型為局部和自動型的變量,只能在使用它們時才占用存 儲空間。2 .在一個源文件中定義的全局變量的作用域為整個源程序。3 .下面程序的執(zhí)行結(jié)果是84intd=l;fun(intp)intd=5;d+=p+;printf(M%d,d);)main()(inta=3;fun(a);d+=a+;printf(“d»,d);6)s=2;4 .該fun函數(shù)的功能是求10的階乘。l)#include2)longfun(intn)3)if(-1)4 ) return (n*fun (2);5)elseif (3)6)return

7、l;第一處:n>l第二處:n-1 第三處:n=l解析:從第2、4行看到了函數(shù)名,函數(shù)體中又出現(xiàn)了函數(shù)的調(diào)用,則是遞歸。我們知 道:n!=n*(n-1)!這就是一個遞歸的表達式,寫成函數(shù)就是fun(n)=n*fun(nT)。因此,4 行處填寫n-1。又:1!二1故3, 5行就好填了。因此答案是nln-ln=l0還有0!二1故,還 可填寫:n>0n-ln=0注意:35行的條件是相反的,這也是if與else條件的互斥性。5 .程序的功能是計算s=l!+2!+3!+n!1)longfun(intn)2) inti;3)longs;4)s 二一1一;5)for(i=l;i<=n;i+)

8、7)returns;8)9) main 010)longs;11) intk, n;12) scanf ('d”, &n);13) s=-3;14)for(k=l;k<=n;k+)15) s =4;16) printf (/z%ldn, s);17)第一處:1第二處:s*i第三處:0第四處:s+fun(k)解析:首先,搞清楚函數(shù)fun、main各自的功能。Fun是求一個數(shù)的階乘,我們知道:n!=l*2*3*-*n同時要死記住:求積,積的初值一般等于1。故fun中s是用來存放積的,其初值等 于1;求階乘是連乘,故s=s*iMain是求和.記?。汉偷某踔狄话愕扔?.兩個函數(shù)中

9、的局部變量s的作用是不同的。Main中的s是存放和的。最后:注意一些變量的類型。階乘是求積,積的增長速度是比較快的,為防止溢出,fun的返回值類型是long。輸 出中Id是輸出長整數(shù)。6.請在函數(shù)fun的橫線上填寫若干個表達式,使從鍵盤上輸入一個整數(shù)n,輸出斐波 納契數(shù)列。斐波契數(shù)列是一種整數(shù)數(shù)列,其中每數(shù)等于前兩數(shù)之后,如:01)intfun(intn)2)if(1)3)return0;4)elseif(2)5)returnl;6)else7) return 3;8)第一處:n=0第二處:n=l第三處:fun(n-l)+fun(n-2)解析:求斐波契數(shù)列:一項等于其前兩項的和。這也是一個遞歸

10、。求斐波契數(shù)列的第n項的值,n從0開始。7.請補全函數(shù)fun,該函數(shù)的功能是求出以下分?jǐn)?shù)序列的前n項之和。和值通過函數(shù)值 返回到main函數(shù)。l)#include2)#include3)1 fun(intn)4) inta, b, c, k;5)doubles;6) s=;7)a=2;8)b=l;9)for(k=l;k<=n;k+)10) 11) s=s+ (2) a/(3一) b;12)c=a;13)a=a+b;14)b=c;15)16)returns;17)第一處:double第二處:double第三處:double解析:從第11一一14總結(jié)出數(shù)列的表達式。第1項是a/b=2/l;3

11、/24/3故:s=2/l+3/2+4/3+和的初值是0。記?。簝蓚€整數(shù)進行算術(shù)運算結(jié)果也是整數(shù),算術(shù)運算中只要有一個操作數(shù)是實數(shù), 運算結(jié)果就是實數(shù)。本題希望結(jié)果是實數(shù),故要進行強制類型轉(zhuǎn)換,2, 3只要有一個進行強制轉(zhuǎn)換就可以了.最后,函數(shù)需要有一個返回值類型,當(dāng)然也是雙精度浮點數(shù)了。8.給定程序的功能是計算并輸出下列級數(shù)的前N項之和SN,直到SN大于q為止,q的值 通過形參傳入。1)doublefun(doubleq)2)intn;3)doubles;4)n=2;5)s=;6) while (s 1 q)7)8)s=s+(double)(n+l)/n;9)2;10)11) printf C

12、,n=%dn/,, n);12)3;13)第一處:s<=q第二處:n+第三處:returns解析:從第8行,從數(shù)學(xué)的角度總結(jié)出數(shù)列的表達式。(n+l)/nn從2開始,每次增加1,故:SN=2+3/2+4/3+和的初值是循環(huán)條件是“SN大于q為止”,while是滿足條件才循環(huán),故填寫最后,函數(shù)需要有一個返回值。9.給定程序功能是計算S=f(-n)+f (f+1) +f (0) +f+f (2)+-+f (n)的值。floatf(doublex)if(x= x=return1;elseif(x<return(x-1)/(工-2);elsereturn(x+1)/(x-2);)doubl

13、efun(intn)inti;doubles二,y;for (An; i(二2; i+)y=f*i);s+=y;return3;)mainOprintf (,z%fn/z, fun (5);第一處:第二處:n第三處:S解析:函數(shù)f(doublex)求每個單項的值。ifelse的條件是互斥的。fun ()是求和。10 .給定程序的功能是計算score中m個人的平均成績aver,將低于aver的成績放在 below中,通過函數(shù)名返回人數(shù)。intfundntscoret intm, intbelowf)inti, j=0;floataver二;for (i=0;i<m;i+)aver+=sco

14、rei;aver/=(float)m;for(i=0;i<m;i+)if(score.i<aver)belowj+=1;returnj;)mainOinti, n, below9;intscore9 = 10, 20, 30, 40, 50, 60, 70, 80, 90;n=fun (score, 9,2);printf (,?nBelowtheaveragescoreare:");for (i=0; i<n; i+)printf 3);)第一處:scorei第二處:below第三處:belowij解析:求平均值,應(yīng)先求和。此處,和與平均值使用了同一個變量。Sco

15、re 是原來的成績,Below1】存放低于平均分的分?jǐn)?shù),還有人數(shù)。Below的長度一定不大于score的長 度。Below的長度必須通過計數(shù)才能得到,且是在比較的過程中得到的。Below數(shù)組的長度 用j來計數(shù),其初值當(dāng)然為0。Fun函數(shù)中:先求總分,平均分;再比較,比平均分低,存于below, j-H-oJ是后加,不能錯了。函數(shù)fun的返回值賦值給n, n就是below數(shù)組的長度。11 .在主函數(shù)中從鍵盤輸入若干個數(shù)放入數(shù)組x中,用0結(jié)束輸入但不計入數(shù)組。下列給 定程序中,函數(shù)fun功能是:輸出數(shù)組元素中小于平均值的元素。voidfun (1, intn)(doublesum二;doublea

16、verage=;inti=0;for(i=0;i<N;I+Xp>2;average =3;for(i=0;i<N;I+Xp>if(xi<AVERAGEXp>if(i%5=0)printf("n");printf ("/d, ", xi);)第一處:intx第二處:sum+=xiZ第三處:sum/n解析:算法思想同上題12 .請補全fun函數(shù),該函數(shù)的功能是求不超過給定自然數(shù)的各個偶數(shù)之和。intfun(intx)inti, s;s=1;for (2)s+=i;returns;)第一處:0第二處:i=2;i解析:求和,和

17、的初值s為0.最小的非負偶數(shù)是0,偶數(shù)間的大小關(guān)系是相差2。13 .請補全main函數(shù),該函數(shù)的功能是:計算并輸出下列多項式的值。S=l+l/(l+2) +1/(1+2+3)+1/(1+2+3+50)include_ 1 fun(intn)inti, j;doublesum=,t;for (i=l;i<=n;i+)t=;for(j=l;j<=i;j+)t+=2;sum+=3;)returnsum;)第一處:double第二處:j第三處:t解析:S中的每一項的分母是1+2+3+i需要用一個一重循環(huán)實現(xiàn),把所有商相加,需要用一個循環(huán);組合起來整個就需要二重循環(huán)。內(nèi)循環(huán)求每個單項的和,外

18、循環(huán)求商的和。每單項的分子是1,應(yīng)該用浮點數(shù);每單項的分母是求和,和的初值為;函數(shù)的返回值是浮點數(shù)。14 .請補全main函數(shù),該函數(shù)的功能是,計算兩個自然數(shù)n和m血<10000)之間所有數(shù)的 和。n和m從鍵盤輸入。mainOintn, m;longsum;1;clrscr0;printf('nlnputn, m'n");scanf ("與d, %d”, &n, &m);while(n<=m)2;n+;)printf (,zsum=%3n", sum);第一處:sum=O第二處:sum+=n第三處:Id解析:求和問題15.請補全main函數(shù),該函數(shù)的功能是:從鍵盤上輸入3個整數(shù),然后找出最大的數(shù)并輸 出。mainOinta, b, c, max;clrscr0;printf(Vnlnputthreenumbers:n");scanf %d", &a, &b, &c);printf (,zThethreenumbersare : %d,

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論