




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C語(yǔ)言程序設(shè)計(jì)(第3版)何欽銘顏暉第10章函數(shù)與程序結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)(第3版)何欽銘顏暉第10章函數(shù)與程序結(jié)構(gòu)C語(yǔ)言程序設(shè)計(jì)(第3版)何欽銘顏暉第10章函數(shù)與程序結(jié)構(gòu)xxx公司C語(yǔ)言程序設(shè)計(jì)(第3版)何欽銘顏暉第10章函數(shù)與程序結(jié)構(gòu)文件編號(hào):文件日期:修訂次數(shù):第1.0次更改批準(zhǔn)審核制定方案設(shè)計(jì),管理制度第10章函數(shù)與程序結(jié)構(gòu)【練習(xí)10-1】使用遞歸函數(shù)計(jì)算1到n之和:若要用遞歸函數(shù)計(jì)算sum=1+2+3+…+n(n為正整數(shù)),請(qǐng)寫出該遞歸函數(shù)的遞歸式子及遞歸出口。試編寫相應(yīng)程序。解答:遞歸式子:sum(i)=sum(i-1)+i;遞歸出口:sum(i)=0;【練習(xí)10-2】請(qǐng)完成下列宏定義:①M(fèi)IN(a,b)求a,b的最小值②ISLOWER(c)判斷c是否為小寫字母③ISLEAP(y)判斷y是否為閏年④CIRFER(r)計(jì)算半徑為r的圓周長(zhǎng)解答:MIN(a,b):求a,b的最小值。#defineMIN(a,b)(a<b)a:bISLOWER(c):判斷c是否為小寫字母。#defineISLOWER(c)(c>='a'&&c<='z')ISLEAP(y):判斷y是否為閏年。#defineISLEAP(y)(y%4==0&&y%100!=0)||y%400==0)CIRFER(r):計(jì)算半徑為r的圓周長(zhǎng)。#definePI#defineCIRFER(r)2*PI*(r)【練習(xí)10-3】分別用函數(shù)和帶參宏實(shí)現(xiàn)從3個(gè)數(shù)中找出最大數(shù),請(qǐng)比較兩者在形式上和使用上的區(qū)別。解答:(1)函數(shù)實(shí)現(xiàn)intmax(intx,inty,intz){intt;if(x>=y)if(x>=z)t=x;elset=z;elseif(y>=z)t=y;elset=z;returnt;}(2)宏實(shí)現(xiàn)#defineMAX(x,y,z)x>=y(x>=zx:z):(y>=zy:z)兩者在定義形式上完全不同。使用上函數(shù)是在執(zhí)行時(shí),從主調(diào)函數(shù)轉(zhuǎn)到函數(shù)max(),然后再返回到主調(diào)函數(shù),函數(shù)體始終存在;而宏是在編譯預(yù)處理時(shí),用條件表達(dá)式去替換MAX(intx,inty,intz),等程序執(zhí)行時(shí),執(zhí)行的是條件表達(dá)式,而不再存在MAX(intx,inty,intz)的式子。習(xí)題10一、選擇題1.要調(diào)用數(shù)學(xué)函數(shù)時(shí),在#include命令行中應(yīng)包含C。A.””B.””C.””D.””2.對(duì)于以下遞歸函數(shù)f,調(diào)用f(4),其返回值為A。intf(intn){if(n)returnf(n-1)+n;elsereturnn;}A.10B.4C.0D.以上均不是3.執(zhí)行下列程序:#defineMA(x,y)(x*y)i=5;i=MA(i,i+1)–7;后變量i的值應(yīng)為B。A.30B.19C.23D.14.宏定義“#defineDIV(a,b)a/b”,經(jīng)DIV(x+5,y-5)引用,替換展開后是A。A.x+5/y-5B.(x+5/y–5)C.(x+5)/(y-5)D.(x+5)/(y-5);5.定義帶參數(shù)的宏“#defineJH(a,b,t)t=a;a=b;b=t”,對(duì)兩個(gè)參數(shù)a、b的值進(jìn)行交換,下列表述中哪個(gè)是正確的C。A.不定義參數(shù)a和b將導(dǎo)致編譯錯(cuò)誤B.不定義參數(shù)a、b、t將導(dǎo)致編譯錯(cuò)誤C.不定義參數(shù)t將導(dǎo)致運(yùn)行錯(cuò)誤D.不需要定義參數(shù)a、b、t類型6.執(zhí)行下面程序,正確的輸出是A。intx=5,y=7;voidswap(){intz;z=x;x=y;y=z;}intmain(void){intx=3,y=8;swap();printf("%d,%d\n",x,y);return0;}A.3,8B.8,3C.5,7D.7,57.下面說(shuō)法中正確的是A。A.若全局變量?jī)H在單個(gè)C文件中訪問(wèn),則可以將這個(gè)變量修改為靜態(tài)全局變量,以降低模塊間的耦合度B.若全局變量?jī)H由單個(gè)函數(shù)訪問(wèn),則可以將這個(gè)變量改為該函數(shù)的靜態(tài)局部變量,以降低模塊間的耦合度C.設(shè)計(jì)和使用訪問(wèn)動(dòng)態(tài)全局變量、靜態(tài)全局變量、靜態(tài)局部變量的函數(shù)時(shí),需要考慮變量生命周期問(wèn)題D.靜態(tài)全局變量使用過(guò)多,可那會(huì)導(dǎo)致動(dòng)態(tài)存儲(chǔ)區(qū)(堆棧)溢出填空題語(yǔ)言的編譯預(yù)處理功能主要包括_條件編譯_、_宏定義_和_文件包含_。2.執(zhí)行完下列語(yǔ)句段后,i的值為5。inti;intf(intx){return((x>0)f(x-1)+f(x-2):1);}i=f(3);3.下列程序段A與B功能等價(jià),請(qǐng)?zhí)顚懗绦蚨蜝中相應(yīng)語(yǔ)句。程序段A:intf(intn){if(n<=1)returnn;elsereturnf(n-1)+f(n-2);}程序B:intf(intn){_intt,t0,t1;_t0=0;t1=1;t=n;while(_n>1_){t=_t0+t1_;t0=t1;t1=t;n--;}return_t;_}5.下面程序用于計(jì)算f(k,n)=1k+2k+…+nk,其中power(m,n)求mn。請(qǐng)?zhí)顚懗绦蛑邢鄳?yīng)語(yǔ)句。#include<>intpower(intm,intn){inti;intp=1;for(i=1;i<=n;i++)p=p*m;returnp;}intf(intk,intn){inti;ints=0;for(i=1;i<=n;i++)s=s+power(i,k);returns;}intmain(void){intk,n;scanf(“%d%d”,&k,&n);printf(“f(%d,%d)=%ld”,k,n,f(k,n));return0;}5.下列遞歸程序的輸出結(jié)果為g=4,g=3,k=6。#include<>intfib(intg){switch(g){case0:return0;case1:case2:return2;}printf("g=%d,",g);returnfib(g-1)+fib(g-2);}intmain(void){intk;k=fib(4);printf("k=%ld\n",k);return0;}6.下列語(yǔ)句的運(yùn)算結(jié)果為_7,-13____。#defineF(x)x-2#defineD(x)x*F(x)printf("%d,%d",D(3),D(D(3)));三、程序設(shè)計(jì)題1.判斷滿足條件的三位數(shù):編寫一個(gè)函數(shù),利用參數(shù)傳入一個(gè)3位數(shù)n,找出101~n間所有滿足下列兩個(gè)條件的數(shù):它是完全平方數(shù),又有兩位數(shù)字相同,如144、676等,函數(shù)返回找出這樣的數(shù)據(jù)的個(gè)數(shù)。試編寫相應(yīng)程序。解答:#include<>#include<>intfun(intn);intmain(void){intn;printf("Inputn:");scanf("%d",&n);printf("total=%d\n",fun(n));return0;}intfun(intn){inti,d=0;for(i=101;i<=n;i++)if(((int)sqrt(i)*(int)sqrt(i))==i){if(i/100==(i/10)%10||i/100==i%10||(i/10)%10==i%10)d++;}returnd;}遞歸求階乘和:輸入一個(gè)整數(shù)n(n>0且n<=10),求1!+2!+3!+……n!。定義并調(diào)用函數(shù)fact(n)計(jì)算n!,函數(shù)類型是double。試編寫相應(yīng)程序。解答:#include<>doublefact(intn);intmain(void){ intn; printf("Inputn:"); scanf("%d",&n); printf("1~%d的階乘和:%.0lf",n,fact(n)); return0;}doublefact(intn){ inti; doubleresult=1; if(n==1) result=1; else{ for(i=1;i<=n;i++) result=result*i; result=result+fact(n-1); } returnresult;}遞歸實(shí)現(xiàn)計(jì)算x?:輸入實(shí)數(shù)x和正整數(shù)n,用遞歸函數(shù)計(jì)算x?的值。試編寫相應(yīng)程序。解答:#include<>doublepower(doublex,intn);intmain(void){ doublex; intn; printf("Inputx:"); scanf("%lf",&x); printf("Inputn:"); scanf("%d",&n); printf("%lf的%d次方=%lf",x,n,power(x,n)); return0;}doublepower(doublex,intn){ doubleresult; if(n==1) result=x; else result=x*power(x,(n-1)); returnresult;}4.遞歸求式子和:輸入實(shí)數(shù)x和正整數(shù)n,用遞歸的方法對(duì)下列計(jì)算式子編寫一個(gè)函數(shù)。f(x,n)=x-x2+x3-x4+…+(-1)n-1x?(n>0)試編寫相應(yīng)程序。解答:#include<>#include<>doublef(doublex,intn);intmain(void){intn;doublex;printf("Inputx:");scanf("%lf",&x);printf("Inputn:");scanf("%d",&n);printf("f(%lf,%d)=%lf\n",x,n,f(x,n));return0;}doublef(doublex,intn){if(n==1) returnx; elsereturnpow(-1,n-1)*pow(x,n)+f(x,n-1);}遞歸計(jì)算函數(shù)ack(m,n):輸入m和n。編寫遞歸函數(shù)計(jì)算Ackermenn函數(shù)的值:n+1m=0ack(m,n)=ack(m-1,1)n=0&&m>0ack(m-1,ack(m,n-1))m>0&&n>0試編寫相應(yīng)程序。解答:#include<>intAck(intm,intn);intmain(void){intm,n;intresult;scanf("%d%d",&m,&n);result=Ack(m,n);printf("Ackerman(%d,%d)=%d\n",m,n,result);return0;}intAck(intm,intn){if(m==0)returnn+1;elseif(n==0&&m>0) returnAck(m-1,1);elseif(m>0&&n>0) returnAck(m-1,Ack(m,n-1));}遞歸實(shí)現(xiàn)求Fabonacci數(shù)列:用遞歸方法編寫求斐波那契數(shù)列的函數(shù),函數(shù)類型為整型,并寫出相應(yīng)主函數(shù)。斐波那契數(shù)列的定義如下。試編寫相應(yīng)程序。f(n)=f(n-2)+f(n-1)(n>1)其中f(0)=0,f(1)=1。解答:#include<>longfib(intn);intmain(void){intn;printf("Entern:");scanf("%d",&n);printf("fib(%d)=%ld\n",n,fib(n));return0;}longfib(intn){longres;if(n==0)res=0;elseif(n==1)res=1;elseres=fib(n-2)+fib(n-1);returnres;}遞歸實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換二進(jìn)制:輸入一個(gè)正整數(shù)n,將其轉(zhuǎn)換為二進(jìn)制輸出。要求定義并調(diào)用函數(shù)dectobini(n),它的功能是輸出n的二進(jìn)制。試編寫相應(yīng)程序。解答:#include<>intdectobini(intn);intmain(void){ intn; printf("Inputn(十進(jìn)制整數(shù)):"); scanf("%d",&n); printf("輸出二進(jìn)制:%d",dectobini(n)); return0;}intdectobini(intn){ intresult; if(n==0) result=0; else result=dectobini(n/2)*10+n%2; returnresult;}8.遞歸實(shí)現(xiàn)順序輸出整數(shù):輸入一個(gè)正整數(shù)n,編寫遞歸函數(shù)實(shí)現(xiàn)對(duì)其進(jìn)行按位順序輸出的遞歸函數(shù)。試編寫相應(yīng)程序。解答:#include<>intinorder(intn);intmain(void){intn;printf("Inputn:");scanf("%d",&n);printf("按位順序輸出:%d\n",inorder(n));return0;}intinorder(intn){if(n<10)returnn;elsereturn(inorder(n/10)*10+n%10);}輸入n(n<10)個(gè)整數(shù),統(tǒng)計(jì)其中素?cái)?shù)的個(gè)數(shù)。要求程序有兩
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度酒吧租賃與品牌推廣合作合同
- 二零二五年度綠色能源企業(yè)合伙購(gòu)買原始股合同
- 二零二五年度農(nóng)業(yè)科技合伙拆伙合同終止書
- 二零二五年度快遞品牌連鎖經(jīng)營(yíng)權(quán)授權(quán)及轉(zhuǎn)讓合同
- 二零二五年度工業(yè)廠房租賃意向金合同模板
- 二零二五年度農(nóng)產(chǎn)品電商平臺(tái)用戶行為分析合作協(xié)議
- 二零二五年度國(guó)有企業(yè)員工離職合同范本
- 高原道路施工安全事故應(yīng)急預(yù)案
- 二零二五年度大連市工抵房物業(yè)管理服務(wù)協(xié)議
- 二零二五年度公司經(jīng)理研發(fā)與技術(shù)管理聘用協(xié)議
- 旅游景觀文化與賞析 知到智慧樹網(wǎng)課答案
- HYT 215-2017 近岸海域海洋生物多樣性評(píng)價(jià)技術(shù)指南
- 2024-貸款受托支付合同模板
- 學(xué)校安全教育培訓(xùn)省公開課金獎(jiǎng)全國(guó)賽課一等獎(jiǎng)微課獲獎(jiǎng)?wù)n件
- 柴油發(fā)電機(jī)基礎(chǔ)知識(shí)教案
- SHT 3005-2016 石油化工自動(dòng)化儀表選型設(shè)計(jì)規(guī)范
- 2024年蘇州衛(wèi)生職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及答案解析
- 陽(yáng)光分級(jí)閱讀 Letters for Mr James 課件
- 攝影基礎(chǔ)基本知識(shí)講座
- JTG 5110-2023 公路養(yǎng)護(hù)技術(shù)標(biāo)準(zhǔn)
- 占道作業(yè)交通安全設(shè)施設(shè)置技術(shù)要求
評(píng)論
0/150
提交評(píng)論