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

下載本文檔

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

文檔簡介

1、C語言函數(shù)練習題一、選擇題1 .一個完整的C源程序是【】。A)要由一個主函數(shù)或一個以上的非主函數(shù)構(gòu)成B)由一個且僅由一個主函數(shù)和零個以上的非主函數(shù)構(gòu)成C)要由一個主函數(shù)和一個以上的非主函數(shù)構(gòu)成D)由一個且只有一個主函數(shù)或多個非主函數(shù)構(gòu)成2 .以下關于函數(shù)的敘述中正確的是【】。A)C語言程序?qū)脑闯绦蛑械谝粋€函數(shù)開始執(zhí)行B)可以在程序中由用戶指定任意一個函數(shù)作為主函數(shù),程序?qū)拇碎_始執(zhí)行C) C語言規(guī)定必須用main作為主函數(shù)名,程序?qū)拇碎_始執(zhí)行,在此結(jié)束D) main可作為用戶標識符,用以定義任意一個函數(shù)3 .以下關于函數(shù)的敘述中不正確的是【】。A)C程序是函數(shù)的集合,包括標準庫函數(shù)和用戶自

2、定義函數(shù)B)在C語言程序中,被調(diào)用的函數(shù)必須在main函數(shù)中定義C)在C語言程序中,函數(shù)的定義不能嵌套D)在C語言程序中,函數(shù)的調(diào)用可以嵌套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)longC)intD)double6 .以下關于函數(shù)敘述中,錯誤的是【】。A)函數(shù)未被調(diào)用時,系統(tǒng)將不為形參分配內(nèi)存單元B)實參與形參的個數(shù)應相等,且實參與形參的類型必須對應一致C)當形參是變量時

3、,實參可以是常量、變量或表達式D)形參可以是常量、變量或表達式7 .若函數(shù)調(diào)用時參數(shù)為基本數(shù)據(jù)類型的變量,以下敘述正確的是【】,A)實參與其對應的形參共占存儲單元B)只有當實參與其對應的形參同名時才共占存儲單元C)實參與對應的形參分別占用不同的存儲單元D)實參將數(shù)據(jù)傳遞給形參后,立即釋放原先占用的存儲單元9 .函數(shù)調(diào)用時,當實參和形參都是簡單變量時,他們之間數(shù)據(jù)傳遞的過程是【A)實參將其地址傳遞給形參,并釋放原先占用的存儲單元B)實參將其地址傳遞給形參,調(diào)用結(jié)束時形參再將其地址回傳給實參C)實參將其值傳遞給形參,調(diào)用結(jié)束時形參再將其值回傳給實參D)實參將其值傳遞給形參,調(diào)用結(jié)束時形參并不將其值

4、回傳給實參10 .若函數(shù)調(diào)用時的實參為變量時,以下關于函數(shù)形參和實參的敘述中正確的是【A)函數(shù)的實參和其對應的形參共占同一存儲單元B)形參只是形式上的存在,不占用具體存儲單元C)同名的實參和形參占同一存儲單元D)函數(shù)的形參和實參分別占用不同的存儲單元11 .若用數(shù)組名作為函數(shù)調(diào)用的實參,則傳遞給形參的是【】。A)數(shù)組的首地址B)數(shù)組的第一個元素的值C)數(shù)組中全部元素的值D)數(shù)組元素的個數(shù)12 .若函數(shù)調(diào)用時,用數(shù)組名作為函數(shù)的參數(shù),以下敘述中正確的是【】。A)實參與其對應的形參共用同一段存儲空間B)實參與其對應的形參占用相同的存儲空間C)實參將其地址傳遞給形參,同時形參也會將該地址傳遞給實參D

5、)實參將其地址傳遞給形參,等同實現(xiàn)了參數(shù)之間的雙向值的傳遞13 .如果一個函數(shù)位于C程序文件的上部,在該函數(shù)體內(nèi)說明語句后的復合語句中定義了一個變量,則該變量【】。A)為全局變量,在本程序文件范圍內(nèi)有效B)為局部變量,只在該函數(shù)內(nèi)有效C)為局部變量,只在該復合語句中有效D)定義無效,為非法變量14 .C語言中函數(shù)返回值的類型是由【】決定。A)return語句中的表達式類型B)調(diào)用函數(shù)的主調(diào)函數(shù)類型C)調(diào)用函數(shù)時臨時D)定義函數(shù)時所指定的函數(shù)類型15 .若在一個C源程序文件中定義了一個允許其他源文件引用的實型外部變量a,則在另一B) float a;文件中可使用的引用說明是【】。A)extern

6、staticfloata;C) extern auto float a;D ) extern float a;16 .定義一個void型函數(shù)意味著調(diào)用該函數(shù)時,函數(shù)【】A)通過return返回一個用戶所希望的函數(shù)值B)返回一個系統(tǒng)默認值C)沒有返回值D)返回一個不確定的值17 .若定義函數(shù)float*fun(),則函數(shù)fun的返回值為【】。A)一個實數(shù)B)一個指向?qū)嵭妥兞康闹羔楥)一個指向?qū)嵭秃瘮?shù)的指針D)一個實型函數(shù)的入口地址18 .C語言規(guī)定,程序中各函數(shù)之間【A)既允許直接遞歸調(diào)用也允許間接遞歸調(diào)用B)不允許直接遞歸調(diào)用也不允許間接遞歸調(diào)用C)允許直接遞歸調(diào)用不允許間接遞歸調(diào)用D)不允許

7、直接遞歸調(diào)用允許間接遞歸調(diào)用19 .若程序中定義函數(shù)floatmyadd(floata,floatb)returna+b;并將其放在調(diào)用語句之后,則在調(diào)用之前應對該函數(shù)進行說明。以下說明中錯誤的是A) floatmyadd(floata,b);B) floatmyadd(floatb,floata);C) floatmyadd(float,float);D) floatmyadd(floata,floatb);20 .關于以下fun函數(shù)的功能敘述中,intfun(char*s)char*t=s;while(*t+);t-;return(t-s);A)求字符串s的長度C)將串s復制到串t21 .

8、下面程序段運行后的輸出結(jié)果是【inta,b;voidswap()intt;t=a;a=b;b=t;main()scanf("%d,%d",&a,&b);swap();printf("a=%d,b=%dn",a,b);A)a=5,b=3B)a=3,b=522 .以下程序運行后的輸出結(jié)果是【fun(inta,intb)if(a>b)returna;elsereturnb;main()intx=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf("%d'n",r);A)3B)623 .

9、以下程序的運行結(jié)果是【】。voidf(inta,intb)正確的是【B)比較兩個串的大小D)求字符串s所占字節(jié)數(shù)】(假設程序運行時輸入5C)5,3OC)8D)12A)33回車)D)3,5intt;t=a;a=b;b=t;main()intx=1,y=3,z=2;if(x>y)f(x,y);elseif(y>z)f(x,z);elsef(x,z);printf("%d,%d,%dn",x,y,z);D) 2,3,1A)1,2,3B)3,1,2C)1,3,224.以下程序運行后的輸出結(jié)果為【】。int*f(int*x,int*y)if(*x<*y)return

10、x;elsereturny;main()inta=7,b=8,*p,*q,*r;p=&a,q=&b;r=f(p,q);printf("%d,%d,%dn",*p,*q,*r);D) 8,7,8A)7,8,8B)7,8,7C)8,7,725 .以下程序的正確運行結(jié)果是【A】。#inclued<stdio.h>main()intk=4,m=1,p;p=func(k,m);printf("d”,p);p=func(k,m);printf("dn”,p);func(inta,intb)staticintm=0,i=2;i+=m+1;m

11、=i+a+b;return(m);A)8,17B)8,16C)8,20D)8,8F(x,y,z)=(x+z)/(y-z)+(y+2 x z)/(x-2 x z)的值,請將程序補充26 .以下程序的功能是計算函數(shù)完整。(A,D)#include<stdio.h>floatf(floatx,floaty)floatvalue;value=1;returnvalue;main()floatx,y,z,sum;scanf("%f%f%f',&x,&y,&z);sum=f(x+z,y-z)+f(【2】);printf("sum=%fn&qu

12、ot;,sum);1A)x/yB)x/zC)(x+z)/(y-z)D)x+z/y-z2】A)y+2z,x-2zB)y+z,x-zC)x+z,y-zD)y+z*z,x-2*z27 .以下程序的功能是根據(jù)輸入的字母,在屏幕上顯示出字符數(shù)組中首字符與其相同的字符串,若不存在,則顯示“Nofind,goodbye!”,請將程序補充完整。(B,D)#include<stdio.h>charPriStr(charchi)inti=0,j=0;staticchar*ch2尸"howareyou","gladtomeetyou","anything

13、new","everythingisfine","verywell,thankyou","seeyoutomorrow"while(i+<6)if(ch1=1)puts(【2】);j=1;returnj;main()charch;printf("nPleaeenterachar:");ch=getchar();ch=PriStr(ch);if(ch=【3】)puts("Nofind,goodbye!");C) *ch2iC) *ch2i-1B ) ch2i-10B ) *ch2i

14、1】A)ch2i02A)ch2iD)*ch2i-10D)ch2i-13】A)?0?B)?48?28 .以下程序是將輸入的一個整數(shù)反序打印出來,則輸出-4321o請將程序補充完整。(D,C)29 .voidprintopp(longintn)inti=0;if(n=0)return;elsewhile(n)if(【1)printf("%ld",n%10);elseprintf("%ld”,-n%10);i+;【2】;main()longintn;scanf("%ld",&n);printopp(n);printf("n"

15、;);11A)n<0&&i=0B)n<0|i=02】A)n%=10B)n%=(-10)29.下面的程序用遞歸定義的方法實現(xiàn)求菲波拉契數(shù)列7項的值fib(7),菲波拉契數(shù)列第1項和第#include<stdio.h>longfib(【1)switch(g)case0:return0;case 1:case 2: return1;return(【2);main()longk;k=fib(7);printf("k=%dn",k);C)0D)30例如輸入1234,則輸出C)n>0&&i=0C)n/=101、1、2、3、5

16、、4321,輸入-1234,D)D)8、n>0|i=0n/=)-10)13、21?第2項的值都是1。請將程序補充完整。(C,D)1】A)g2】A)fib(7)B)kC)B)fib(g)C)longintgfib(k)D)D)intkfib(g-1)+fib(g-2)return 1;30.有以下程序(A)intfun(intn)if(n=1)elsereturn(n+fun(n-1);main()intx;scanf("%d",&x);x=fun(x);printf("%dn",x);程序執(zhí)行時,若輸入10,程序的輸出結(jié)果是【A) 55B)

17、 54C) 65D)4531.下面是一個計算1至m的階乘弁依次輸出的程序。#include<stdio.h>程序中應填入的正確選項是【D! odouble result=1;factorial( int j)result=result*j;return;main()int m,i=0,x;printf("Please enter an integer:");scanf("%d",&m); for(;i+<m;)x=factorial(i);printf("%d!=%.0fn",);)A) i,factoria

18、l(i)B) i,xC)j,xD) i,result32.以下程序的功能是求任意兩個整數(shù)a和b的最大公約數(shù),弁予以顯示。請將程序補充完整。(B,A)#include<stdio.h>#include<stdlib.h>longcodivisor(longn1,longn2)longt;while(n2!=0)【1;n1=n2;n2=t;return(【2);main()longa,b,x;printf("pleaseinputtwonumbers:");scanf("%ld%ld”,&a,&b);x=codivisor(a,

19、b);printf("maximumcommondivisorof%ldand%ldis:%ldn”,a,b,x);1】A)t=n1/n2B)t=n1%n2C)t=n2%n1D)t=n2/n133.2】A)labs(n1)B)labs(a)C)labs(b)D)labs(n2)請將程序補充以下程序的功能是計算弁顯示一個指定行數(shù)的楊輝三角形(形狀如下),完整。(C,B,A)11112113311464115101051程序:#include<stdio.h>#defineN15voidyanghui(intbN,intn)inti,j;for(i=0;【1】;i+)bi0=

20、1;bii=1;for(【2;+i<=n;)for(j=1;j<i;j+)bij=3】;for(i=0;i<n;i+)for(j=0;j<=i;j+)printf("%4d",bij);printf("n");main()intaNN=0,n;printf("pleaseinputsizeofyanghuitriangle(<=15)");scanf("%d",&n);printf("n");yanghui(a,n);11A)i<NB)i<=N2

21、】A)i=0B)i=131A)bi-11+bi-1jC)bi-1j-1+bi-1j+1C)i<nD)i<=nC)i=2D)i=3B)bi-2j-1+bi-1jD)bi-2j-2+bi-1j34.25,則輸卜面的程序用來將一個十進制正整數(shù)轉(zhuǎn)化成八進制數(shù),例如輸入一個正整數(shù)出31,請將程序補充完整。(D,C)#include<stdio.h>main()inti=0,j=0,a,b10=0;printf("nPleaseinputainteger:");scanf("%d",&a);sub(a,b);for(;i<10;

22、i+)if(【1】)j+;if(j!=0)printf("%d",bi);sub(intc,intd口)inte,i=9;while(c!=0)e=c%8;di=e;return;C) bi<=0DC) c=c/8N個整數(shù)的升序數(shù)組a)bi!=0D ) c=e%8中對關鍵字 key1JA)bi<0B)bi-1!=02A)c=sub(c/8)B)c=c%835.函數(shù)bisearch的作用是應用折半查找法從存有進行查找。請將程序補充完整。(C,A,B)#include<stdio.h>#defineN15bisearch(intaN,intkey)int

23、low=0,high=N-1,mid;while(【1)mid=(low+high)/2;if(key<amid)【2】;elseif(key>amid)low=mid+1;elsereturnmid;return【3】main()intbN,n,I,j;printf("Pleaseinputa%delementincreasingsequence:",N);for(i=0;i<N;i+)printf("b%d=",i);scanf("%d”,&bi);printf("Pleaseinputasearchin

24、gkey:");scanf("%d",&n);j=bisearch(b,n);if(j<-5)printf("Don?tfind%dn",n);elseprintf("b%d=%dn",j,n);38.1 A)low<high2 A)high=mid-1【3】A)0以下程序是選出能被B)low!=highC)low<=highD)low<=high-1B)low=mid+1B)-10C)high=mid+1C)-1D)low=mid-1D)13整除且至少有一位是5的所有三位正整數(shù)百位為a2),

25、打印出所有這樣的數(shù)及其個數(shù)。請將程序補充完整。k(個位為a0,十位為a1, (C,B,A)#include<stdio.h>sub(intm,intn)inta0,a1,a2;a2=1;a1=2;a0=m%10;if(m%3=0&&(a2=5|a1=5|a0=5)39.printf( "d ”,m);n+;return n;main()int m=0,k;for(k=105;k<=995;k+) m=sub(【3);printf("nn=%dn",m);1】A)m/10B)【21A)(m-a2*10)/10B)3】A)k,mB)m

26、%10 m/10-a2*10 m,kC) m/100C) m%10-a2*10C) k,nD)D)D)以下程序可計算10名學生1門課成績的平均分,要求使用無返回值函數(shù)實現(xiàn)。m%100 m%100-m%10n,k請將程序補充完整。(C,B,D)#include<stdio.h>void averagefloat array10)int i=0;while(【1 )array0+=2;arrayi-1=array0/10;main()float score10;int i;printf("Please input 10 scores:n");for(i=0;i<

27、;10;i+)scanf("%f”,&scorei);average(score);printf("The average score is %.2fn",)11 A ) i<=10B ) i+<102】A ) arrayi-1B ) arrayi3】A ) score8B ) score0【3】);C) +i<10C) arrayi-C) array8D) i<10D) arrayi+D) score9:.讀程序?qū)懡Y(jié)果1.fun(int x,int y,int z)z=x*x+y*y;main()inta=31;fun(6,3,a

28、);printf("%d",a);(31)2.intf()staticinti=0;ints=1;s+=i;i+;returns;main()inti,a=0;for(i=0;i<5;i+)a+=f();printf("%d'n",a);(15)3. 運行程序時,若從鍵盤輸入asdafaaz67(同車),分析以下程序的輸出結(jié)果。#include<stdio.h>intfun(char*str)inti,j=0;for(i=0;stri!=?;i+)if(stri!=?)strj+=stri;strj=?;main()charst

29、r81;intn;printf("Inputastring:");gets(str);fun(str);printf("%sn",str);(asdafaaz67)4.voidswap(int*p1,int*p2)int*t;t=p1,p1=p2,p2=t;printf("*p1=%d,*p2=%dn",*p1,*p2);main()intx=10,y=20;swap(&x,&y);printf("x=%d,y=%dn",x,y);(10,20)5.#include<stdio.h>vo

30、idfun(int*s,intm,intn)intt;while(m<n)t=sm;sm=sn;sn=t;m+;n-;main()Inta5=1,2,3,4,5,k;fun(a,0,4);for(k=0;k<5;k+)printf("%d",ak);(5,4,3,2,1)6.intfun(chars口)intn=0;while(*s<='9'&&*s>='0')n=10*n+*s-'0's+;return(n);main()chars10='6','1',

31、'*','4','*','9','*','0','*'printf("%dn",fun(s);(61)7.#include<stdio.h>Intfun(intx)inty;if(x=0|x=1)return(3);y=x*x-fun(x-2)returny;main()intx,y;x=fun(3);y=fun(4);printf("%d,%dn",x,y);(6,15)8.fun(intn,int*s)intf1,f2;if(n

32、=111n=2)*s=1;elsefun(n-1,&f1);fun(n-2,&f2);*s=f1+f2;main()intx;fun(6,&x);printf("%d'n",x);三、填空題1 .以下程序?qū)崿F(xiàn)了計算x的n次方,請將程序填寫完整。floatpower(floatx,intn)inti;floatt=1;for(i=1;i<=n;i+)t=t*x;returnt;main()floatx,y;intn;scanf("%f,%d",&x,&n);y=power(x,n);printf("%8.2fn",y);2 .以下程序?qū)崿F(xiàn)了求兩個數(shù)的最大公約數(shù),請將程序填寫完整。intdivisor(inta,intb)intr;r=a%b;while(r!=0)a=b;b=r;r=a%b;returnb;voidmain()inta,b,d,t;scanf("%d%d”,&a,&b);if(a<b)t=a;a=b;b=t;d=divisor(a,b);printf("ngcd=%d",d);3 .以下函數(shù)my_cmp()的功能是比較字符串s和t的大小,當s等于t時返回0,否則返回s和t的第一個不同字符的ASCI

溫馨提示

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

評論

0/150

提交評論