第八章函數(shù)練習(xí)題.doc_第1頁
第八章函數(shù)練習(xí)題.doc_第2頁
第八章函數(shù)練習(xí)題.doc_第3頁
第八章函數(shù)練習(xí)題.doc_第4頁
第八章函數(shù)練習(xí)題.doc_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第八章函數(shù)8.1選擇題【題8.1】以下正確的說法是。建立函數(shù)的目的之一是A)提高程序的執(zhí)行效率 B)提高程序的可讀性C)減少程序的篇幅 D)減少程序文件所占內(nèi)存【題8.2】以下正確的函數(shù)形式是。A) double fun(int x,int y) z=x+y; return z; B) fun(int x,y) int z; return z; C) fun(x,y) /*說明:函數(shù)定義時(shí),確省返回類型時(shí),默認(rèn)為int*/ int x,y; double z; z=x+y; return z; D) double fun(int x,int y) /*本答案是最好的*/ double z; z=x+y; return z; 【題8.3】以下正確的說法是。在C語言中A)實(shí)參和與其對應(yīng)的形參各占用獨(dú)立的存儲單元B)實(shí)參和與其對應(yīng)的形參共占用一個(gè)存儲單元C)只有當(dāng)實(shí)參和與其對應(yīng)的形參同名時(shí)才共占用存儲單元D)形參是虛擬的,不占用存儲單元【題8.4】以下正確的說法是。A) 定義函數(shù)時(shí),形參的類型說明可以放在函數(shù)體內(nèi)B) return后邊的值不能為表達(dá)式C) 如果函數(shù)值的類型與返回值類型不一致,以函數(shù)值類型為準(zhǔn)D) 如果形參與實(shí)參的類型不一致,以實(shí)參類型為準(zhǔn)說明:以形參類型為準(zhǔn),因?yàn)閭鬟f過程是實(shí)參將其值賦予形參【題8.5】以下程序有語法性錯(cuò)誤,有關(guān)錯(cuò)誤原因的正確說法是。main()int G=5,k;void prt_char(); k=prt_char(G); A) 語句void prt_char();有錯(cuò),它是函數(shù)調(diào)用語句,不能用void說明B) 變量名不能使用大寫字母C) 函數(shù)說明和函數(shù)調(diào)用語句之間有矛盾/*說明:函數(shù)為void類型時(shí),只能作為獨(dú)立語句調(diào)用,而不能出現(xiàn)在表達(dá)式中*/D) 函數(shù)名不能使用下劃線【題8.6】C語言允許函數(shù)值類型缺省定義,此時(shí)該函數(shù)值隱含的類型是。A) float型 B)int型 C)long型 D)double型【題8.7】以下是有關(guān)漢諾塔問題的程序段,若在main函數(shù)中有調(diào)用語句hanoi(3,A,B,C);則符合程序段運(yùn)行結(jié)果的選項(xiàng)是。void move(char getone,char putone) printf(“%c-%cn”,getone,putone); void hanoi(int n,char one,char two,char three)if(n=1) move(one,three);elsehanoi(n-1,one,three,two);move(one,three);hanoi(n-1,two,one,three);A)A-C B)A-CC)A-CD)A-C A-BA-B A-B A-B C-BC-A C-B C-B B-AA-B A-C A-C C-BB-C B-A A-B A-CA-C B-C B-C A-B A-B A-C A-C【題8.8】若用數(shù)組名作為函數(shù)調(diào)用的實(shí)參,傳遞給形參的是。A) 數(shù)組的首地址 B)數(shù)組第一個(gè)元素的值C)數(shù)組中全部元素的值 D)數(shù)組元素的個(gè)數(shù)【題8.9】折半查找法的思路是:先確定待查元素的范圍,將其分成兩半,然后測試位于中間點(diǎn)元素的值。如果該待查元素的值大于中間點(diǎn)元素,就縮小待查范圍,只測試中點(diǎn)之后的元素;反之,測試中點(diǎn)之前的元素,測試方法同前。函數(shù)binary的作用是應(yīng)用折半查找法從存有10個(gè)整數(shù)的a數(shù)組中對關(guān)鍵字m進(jìn)行查找,若找到,返回其下標(biāo)值;返回-1。請選擇填空。binary(int a10,int m)int low=0,high=9,mid;while(low=high)mid=(low+high)/2;if(mamid) 【2】;else return(mid);return(-1);【1】 A)high=mid-1B)low=mid+1C)high=mid+1D)low=mid-1【2】 A)high=mid-1B)low=mid+1C)high=mid+1D)low=mid-1【題8.10】以下正確的說法是。如果在一個(gè)函數(shù)中的復(fù)合語句中定義了一個(gè)變量,則該變量A) 只在該復(fù)合語句中有效B) 在該函數(shù)中有效C) 在本程序范圍內(nèi)均有效D) 為非法變量【題8.11】以下不正確的說法為。A) 在不同函數(shù)中可以使用相同名字的變量B) 形式參數(shù)是局部變量C) 在函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效D) 在函數(shù)內(nèi)的復(fù)合語句中定義的變量在本函數(shù)范圍內(nèi)有效【題8.12】以下程序的正確運(yùn)行結(jié)果是。#include void num()extern int x,y;int a=15,b=10;x=a-b;y=a+b;int x,y;main()int a=7,b=5;x=a+b;y=a-b;num();printf(“%d,%dn”,x,y);A)12,2B)不確定C)5,25D)1,12【題8.13】凡是函數(shù)中未指定存儲類型的局部變量,其隱含的存儲類別為。A)自動(dòng)(auto)B)靜態(tài)(static)C)外部(extern)D)寄存器(register)【題8.14】在一個(gè)C源程序文件中,若要定義一個(gè)只允許本源文件中所有函數(shù)使用的全局變量,則該變量需要使用的存儲類別是。A)extern B)register C)autoD)static【題8.15】以下程序的正確運(yùn)行結(jié)果是。main() int a=2,i;for(i=0;i3;i+) printf(“%4d”,f(a);f(int a) int b=0;static int c=3;b+; c+;return(a+b+c);A)7 7 7B)7 10 13C)7 9 11D)7 8 9【題8.16】以下程序的正確運(yùn)行結(jié)果是。#include main()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) static int m=0,i=2;i+=m+1;m=i+a+b;return(m); A)8,17B)8,16C)8,20D)8,88.2填空題【題8.17】以下程序的運(yùn)行結(jié)果是。main()int i=2,x=5,j=7;fun(j,6);printf(“i=%d;j=%d;x=%dn”,i,j,x);fun(int i,int j)int x=7;printf(“i=%d;j=%d;x=%dn”,i,j,x);【題8.18】以下程序的功能是根據(jù)輸入的“y”(“Y”)與“n”(“N”),在屏幕上分別顯示出“This is YES.”與“This is NO.”。請?zhí)羁铡?include void YesNo(char ch)switch(ch)case y:case Y: printf(“nThis is YES.n”); 【1】;case n:case N: printf(“nThis is No.n”); 【2】;main()char ch;printf(“nEnter a char y,Yorn,N:”);ch=【3】;printf(“ch:%c”,ch);YesNo(ch);【題8.19】以下Check函數(shù)的功能是對value中的值進(jìn)行四舍五入計(jì)算,若計(jì)算后的值與ponse值相等,則顯示“Well done!”,否則顯示計(jì)算后的值。已有函數(shù)調(diào)用語句Check(ponse,value);請?zhí)羁?。void Check(int ponse,float value)int val;val=【1】;printf(“計(jì)算后的值:%d”,val);if(【2】) printf(“nWELL DONE!n”);else printf(“nSorry the correct answer is %dn”,val);【題8.20】下程序功能是用2分法求方程根,要求絕對誤差不超過0.001。請?zhí)羁铡?include float f(float x) return(2*x*x*x-4*x*x+3*x-6); main( )float m=-100,n=90,r;r=(m+n)/2;while(f(r)*f(n)!=0) if(【1】) m=r;else n=r;if(【2】) break;r=(m+n)/2;printf(“The is fangcheng jie is %6.3fn”,r); 【題8.21】若輸入一個(gè)整數(shù)10,以下程序的運(yùn)行結(jié)果是。main()int a,e10,c,i=0;printf(“輸入一整數(shù)n”);scanf(“%d”,&a);while(a!=0)c=sub(a);a=a/2;ei=c;i+;for(;i0;i-) printf(“%d”,ei-1);sub(int a)int c;c=a%2;return c;【題8.22】以下程序的運(yùn)行結(jié)果是輸出如下圖形。請?zhí)羁铡?* * * * * * * * * * * * * * * * * * * * * * * *#include void a(int i)int j,k;for(j=0;j=7-i;j+) printf(“”);for(k=0;k【1】;k+) printf(“*”);printf(“n”);main()int i;for(i=0;i=0;i-) 【3】;【題8.23】函數(shù)gongyu的作用是求整數(shù)num1和num2的最大公約數(shù),并返回該值,請?zhí)羁铡ongyu(int num1,int num2) int temp,a,b;if(num1【1】num2) temp=num1; num1=num2; num2=temp; a=num1; b=num2;while(【2】) temp=a%b; a=b; b=temp; return(a);【題8.24】以下程序的運(yùn)行結(jié)果是。main()int x=2,y=3,z=0;printf(“(1) x=%d y=%d z=%dn”,x,y,z);add(x,y,z);printf(“(3) x=%d y=%d z=%dn”,x,y,z);add(int x,int y,int z)z=x+y; x=x*x; y=y*y;printf(“(2) x=%d y=%d z=%dn”,x,y,z);【題8.25】以下程序的運(yùn)行結(jié)果是。#include main()printf(“FACT(5):%dn”,fact(5);printf(“FACT(1):%dn”,fact(1);fact(-5);fact(int value) if(value0) printf(“FACT(-1):Error!n”); return(-1); else if(value=|value=0) return(1);else return(value*fact(value-1);【題8.26】以下程序的功能是用遞歸方法計(jì)算五位學(xué)生的年齡,請?zhí)羁铡_f歸公式如下:#include age(int n) int c;if(n=1) c=10;else c=【1】;return(c);main() int n=5;printf(“age:%dn”,【2】);【題8.27】以下程序的運(yùn)行結(jié)果是。#include f(int a)int i=0;while(ai=10)printf(“%d”,ai);i+;main()int a=1,5,10,9,11,7;f(a+1);【題8.28】閱讀下面程序,完成下列問題中的填空。問題(1)此程序在調(diào)用函數(shù)f后運(yùn)行結(jié)果是【1】。(2)若將函數(shù)f中的for(j=i+1;j4;j+)改為for(j=0;j3-i;j+),則 程序的運(yùn)行結(jié)果是【2】。f(int s4)int i,j,k;for(i=0;i3;i+)for(j=i+1;j4;j+) k=sij; sij=sji; sji=k; main()int s44,i,j;for(i=0;i4;i+)for(j=0;j4;j+)sij=i-j;f(s);for(i=0;i4;i+)printf(“n”);for(j=0;j4;j+)printf(“%4d”,sij);【題8.29】以下search函數(shù)的功能是利用順序查找法從數(shù)組a的10個(gè)元素中對關(guān)鍵字m進(jìn)行查找。順序查找法的思路是:從第一個(gè)元素開始,從前向后依次與關(guān)鍵字比較,直到找到此元素或查找到數(shù)組尾部時(shí)結(jié)束。若找到,返回此元素的下標(biāo);若仍未找到,則返回值-1。請?zhí)羁铡?include int search(int a10,int m)int i;for(i=0;i=9;i+) if(【1】) return(i);return(-1);main()int a10,m,i,no;no=search(【2】);if(【3】) printf(“nOK FOUND!%d”,no+1);else printf(“nSorry Not Found!”);【題8.30】以下程序的運(yùn)行結(jié)果是【1】,其算法是【2】。main()int a5=5,10,-7,3,7,i,t,j;sort(a);for(i=0;i=4;i+) printf(“%d”,ai);sort(int a)int i,j,t;for(i=0;i4;i+)for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=t; 【題8.31】以下程序的運(yùn)行結(jié)果是【1】,其算法是【2】。main()int a5=9,6,8,3,-1,i,t,j,p;sort(a);for(i=0;i=4;i+) printf(“%d”,ai);sort(int a)int i,j,t,p;for(j=0;j4;j+)p=j;for(i=j;i=4;i+)if(aiap) p=i;t=ap; ap=aj; aj=t;【題8.32】以下程序的運(yùn)行結(jié)果是。#include func(int array4,int m)int i,j,k;k=0;for(i=0;i3;i+)for(j=0;j4;j+)if(arrayijm)k=k+arrayij;return(k);main()static int a34=1,13,5,7,2,4,26,8,10,1,3,12;int i,j,m;for(i=0;i3;i+)for(j=0;j4;j+) printf(“%4d”,aij);printf(“n”);m=10;printf(“nthe value is %dn”,func(a,m);【題8.33】以下程序運(yùn)行結(jié)果是。main()int a=1,b=2,c=3;+a;c+=+b;int b=4,c;c=b*3;a+=c;printf(“first:%d,%d,%dn”,a,b,c);a+=c;printf(“second:%d,%d,%dn”,a,b,c);printf(“third:%d,%d,%dn”,a,b,c);【題8.34】以下程序的運(yùn)行結(jié)果是。int x1=30,x2=40;main()int x3=10,x4=20;sub(x3,x4);sub(x2,x1);printf(“%d,%d,%d,%dn”,x3,x4,x1,x2);sub(int x,int y)x1=x;x=y;y=x1;【題8.35】以下程序的運(yùn)行結(jié)果是。int i=0;main()int i=5;reset(i/2); printf(“i=%dn”,i);reset(i=i/2); printf(“i=%dn”,i);reset(i/2); printf(“i=%dn”,i);workover(i); printf(“i=%dn”,i);workover(int i)i=(i%i)*(i*i)/(2*i)+4);printf(“i=%dn”,i);return(i);reset(int i)i=i=2?5:0;return(i);【題8.36】以下程序的運(yùn)行結(jié)果是。main() incx(); incy(); incx(); incy(); incx(); incy(); incx() int x=0;printf(“x=%dt”,+x);incy() static int y=0;printf(“ny=%dn”,+y);【題8.37】以下程序的運(yùn)行結(jié)果是。int n=1;main()static int x=5; int y;y=n;printf(“MAIN:x=%2d y=%2d n=%2dn”,x,y,n);func();printf(“MAIN:x=%2d y=%2d n=%2dn”,x,y,n);func();func()static int x=4; int y=10;x=x+2; n=n+10; y=y+n; printf(“FUNC:x=%2d y=%2d n=%2dn”,x,y,n);8.3編程題【題8.38】已有變量定義和函數(shù)調(diào)用語句:int a=1,b=-5,c;c=fun(a,b);fun函數(shù)的作用是計(jì)算兩個(gè)數(shù)之差的絕對值,并將差值返回調(diào)用函數(shù),請編寫fun函數(shù)。fun(int x,int y)【題8.39】已有變量定義和函數(shù)調(diào)用語句:int x=57; isprime(x);函數(shù)isprime()用來判斷一個(gè)整型數(shù)是否為素?cái)?shù),若是素?cái)?shù),函數(shù)返回1,否則返回0。請編寫isprime函數(shù)。isprime(int a)【題8.40】下程序功能是用牛頓法求方程f(x)=cosx-x=0。初始值x0=3.1415/4,要求絕對誤差不超過0.001,函數(shù)f用計(jì)算迭代公式中的值,請編寫f函數(shù)。牛頓迭代公式是:即:#include #include #define PI 3.1415float f(float x0)main()int t=0,k=100,n=0;float x0=PI/4,x1;while(nk) x1=f(x0); if(fabs(x0-x1)0.001) t=1; break; else x0=x1; n=n+1; if(t=1) printf(“nFangcheng geng is %10.5f”,x1);else printf(“nSo

溫馨提示

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

最新文檔

評論

0/150

提交評論