C語(yǔ)言程序設(shè)計(jì)(第3版)何欽銘 顏 暉 第10章函數(shù)與程序結(jié)構(gòu)

上傳人:xin****18 文檔編號(hào):114396913 上傳時(shí)間:2022-06-28 格式:DOCX 頁(yè)數(shù):11 大?。?6.42KB
收藏 版權(quán)申訴 舉報(bào) 下載
C語(yǔ)言程序設(shè)計(jì)(第3版)何欽銘 顏 暉 第10章函數(shù)與程序結(jié)構(gòu)_第1頁(yè)
第1頁(yè) / 共11頁(yè)
C語(yǔ)言程序設(shè)計(jì)(第3版)何欽銘 顏 暉 第10章函數(shù)與程序結(jié)構(gòu)_第2頁(yè)
第2頁(yè) / 共11頁(yè)
C語(yǔ)言程序設(shè)計(jì)(第3版)何欽銘 顏 暉 第10章函數(shù)與程序結(jié)構(gòu)_第3頁(yè)
第3頁(yè) / 共11頁(yè)

本資源只提供3頁(yè)預(yù)覽,全部文檔請(qǐng)下載后查看!喜歡就下載吧,查找使用更方便

15 積分

下載資源

資源描述:

《C語(yǔ)言程序設(shè)計(jì)(第3版)何欽銘 顏 暉 第10章函數(shù)與程序結(jié)構(gòu)》由會(huì)員分享,可在線閱讀,更多相關(guān)《C語(yǔ)言程序設(shè)計(jì)(第3版)何欽銘 顏 暉 第10章函數(shù)與程序結(jié)構(gòu)(11頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、第10章函數(shù)與程序結(jié)構(gòu)【練習(xí)10-1】使用遞歸函數(shù)計(jì)算1到n之和:若要用遞歸函數(shù)計(jì)算sum=l+2+3+n(n為正整數(shù)),請(qǐng)寫(xiě)出該遞歸函數(shù)的遞歸式子及遞歸出口。試編寫(xiě)相應(yīng)程序。解答:遞歸式子:sum(i)=sum(i-1)+i;遞歸出口:sum(i)=0;【練習(xí)10-2】請(qǐng)完成下列宏定義: MIN(a,b)求a,b的最小值 ISLOWER(c)判斷c是否為小寫(xiě)字母 ISLEAP(y)判斷y是否為閏年 CIRFER(r)計(jì)算半徑為r的圓周長(zhǎng)解答: MIN(a,b):求a,b的最小值。#defineMIN(a,b)(a=a&c=y)if(x=z)t=x;elset=z;elseif(y=z)t=y

2、;elset=z;returnt;(2) 宏實(shí)現(xiàn)#defineMAX(x,y,z)x=y?(x=z?x:z):(y=z?y: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)包含CC.”math.h”A”stdio.h”B”string.h”D.”ctype.h”2. 對(duì)于以下遞歸函數(shù)f,

3、調(diào)用f(4),其返回值為Aintf(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.1引用,替換展4宏定義“#defineDIV(a,b)a/b”,經(jīng)DIV(x+5,y-5)開(kāi)后是A。A. x+5/y-5C.(x+5)/(y-5)B. (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)行交換,下列表

4、述中哪個(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類(lèi)型6.執(zhí)行下面程序,正確的輸出是Aintx=5,y=7;voidswap()intz;z=x;x=y;y=z;intmain(void)intx=3,y=8;swap();printf(%d,%dn,x,y);return0;A3,8B8,3C5,7D7,57下面說(shuō)法中正確的是A。A. 若全局變量?jī)H在單個(gè)C文件中訪問(wèn),則可以將這個(gè)變量修改為靜態(tài)全局變量,以降低模塊間的耦合度B. 若全局變量?jī)H由單個(gè)函數(shù)訪問(wèn),則可以將這個(gè)變量改為該函數(shù)的靜態(tài)局部

5、變量,以降低模塊間的耦合度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ū)(堆棧)溢出二、填空題1. C語(yǔ)言的編譯預(yù)處理功能主要包括_條件編譯_、_宏定義_和_文件包含_。2執(zhí)行完下列語(yǔ)句段后,i的值為5。inti;intf(intx)return(x0)?f(x-1)+f(x-2):1);i=f(3);3.下列程序段A與B功能等價(jià),請(qǐng)?zhí)顚?xiě)程序段B中相應(yīng)語(yǔ)句。程序段A:intf(intn)if(n1_)t=_t0+t1_;t0=t1;t1=t;n-;return_t;_5.下面程序用于計(jì)算f(k,n)

6、=lk+2k+nk,其中power(m,n)求mn。請(qǐng)?zhí)顚?xiě)程序中相應(yīng)語(yǔ)句。#includeintpower(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。#includeintfib(intg)swi

7、tch(g)case0:return0;case1:case2:return2;printf(g=%d,g);returnfib(g-1)+fib(g-2);intmain(void)intk;k=fib(4);printf(k=%ldn,k);return0;6下列語(yǔ)句的運(yùn)算結(jié)果為_(kāi)7,-13。#defineF(x)x-2#defineD(x)x*F(x)printf(%d,%d,D(3),D(D(3);三、程序設(shè)計(jì)題1.判斷滿足條件的三位數(shù):編寫(xiě)一個(gè)函數(shù),利用參數(shù)傳入一個(gè)3位數(shù)n找出101n間所有滿足下列兩個(gè)條件的數(shù):它是完全平方數(shù),又有兩位數(shù)字相同,如144、676等,函數(shù)返回找出這樣的

8、數(shù)據(jù)的個(gè)數(shù)。試編寫(xiě)相應(yīng)程序。解答:#include#includeintfun(intn);intmain(void)intn;printf(Inputn:);scanf(%d,&n);printf(total=%dn,fun(n);return0;intfun(intn)inti,d=0;for(i=101;i0且n=10),求1!+2!+3!+n!。定義并調(diào)用函數(shù)fact(n)計(jì)算n!,函數(shù)類(lèi)型是double。試編寫(xiě)相應(yīng)程序。解答:#includedoublefact(intn);intmain(void)intn;printf(Inputn:);scanf(%d,&n);printf(l

9、%d的階乘和:.0lf,n,fact(n);return0;doublefact(intn)inti;doubleresult=1;if(n=1)result=1;elsefor(i=1;i=n;i+)result=result*i;result=result+fact(n-1);returnresult;3. 遞歸實(shí)現(xiàn)計(jì)算x輸入實(shí)數(shù)x和正整數(shù)n,用遞歸函數(shù)計(jì)算x*的值。試編寫(xiě)相應(yīng)程序。解答:#includedoublepower(doublex,intn);intmain(void)doublex;intn;printf(Inputx:);scanf(%lf,&x);printf(Input

10、n:);scanf(%d,&n);printf(%lf的小次方=%lf,x,n,power(x,n);return0;doublepower(doublex,intn)doubleresult;if(n=1)result=x;elseresult=x*power(x,(n-1);returnresult;4. 遞歸求式子和:輸入實(shí)數(shù)x和正整數(shù)n,用遞歸的方法對(duì)下列計(jì)算式子編寫(xiě)一個(gè)函數(shù)。f(x,n)=x-x?+x?-X4+(-1)n-ix(n0)試編寫(xiě)相應(yīng)程序。解答:#include#includedoublef(doublex,intn);intmain(void)intn;doublex;p

11、rintf(Inputx:);scanf(%lf,&x);printf(Inputn:);scanf(%d,&n);printf(f(%lf,%d)=%lfn,x,n,f(x,n);return0;doublef(doublex,intn)if(n=1)returnx;else5. 遞歸計(jì)算函數(shù)ack(m,n):輸入m和n。編寫(xiě)遞歸函數(shù)計(jì)算Ackermenn函數(shù)的值:n+1m=0ack(m,n)二0ack(ml,ack(m,nl)m0&n0試編寫(xiě)相應(yīng)程序。解答:#includeintAck(intm,intn);intmain(void)intm,n;intresult;scanf(%d%d,

12、&m,&n);result=Ack(m,n);printf(Ackerman(%d,%d)=%dn,m,n,result);return0;intAck(intm,intn)if(m=0)returnn+1;elseif(n=0&m0)returnAck(m1,1);elseif(m0&n0)returnAck(m1,Ack(m,n1);6. 遞歸實(shí)現(xiàn)求Fabonacci數(shù)列:用遞歸方法編寫(xiě)求斐波那契數(shù)列的函數(shù),函數(shù)類(lèi)型為整型,并寫(xiě)出相應(yīng)主函數(shù)。斐波那契數(shù)列的定義如下。試編寫(xiě)相應(yīng)程序。f(n)=f(n2)+f(n1)(nl)其中f(0)二0,f(l)二1。解答:#includelongfib(

13、intn);intmain(void)intn;printf(Entern:);scanf(%d,&n);printf(fib(%d)=%ldn,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;7. 遞歸實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換二進(jìn)制:輸入一個(gè)正整數(shù)n,將其轉(zhuǎn)換為二進(jìn)制輸出。要求定義并調(diào)用函數(shù)dectobini(n),它的功能是輸出n的二進(jìn)制。試編寫(xiě)相應(yīng)程序。解答:#includeintdectobini(intn);intmain(void)i

14、ntn;printf(Inputn(十進(jìn)制整數(shù)):);scanf(%d,&n);printf(“輸出二進(jìn)制:%d,dectobini(n);return0;intdectobini(intn)intresult;if(n=0)result=0;elseresult=dectobini(n/2)*10+n%2;returnresult;8. 遞歸實(shí)現(xiàn)順序輸出整數(shù):輸入一個(gè)正整數(shù)n,編寫(xiě)遞歸函數(shù)實(shí)現(xiàn)對(duì)其進(jìn)行按位順序輸出的遞歸函數(shù)。試編寫(xiě)相應(yīng)程序。解答:#includeintinorder(intn);intmain(void)intn;printf(Inputn:);scanf(%d,&n);pr

15、intf(按位順序輸出:%dn,inorder(n);return0;intinorder(intn)if(n10)returnn;elsereturn(inorder(n/10)*10+n%10);9. 輸入n(n10)個(gè)整數(shù),統(tǒng)計(jì)其中素?cái)?shù)的個(gè)數(shù)。要求程序有兩個(gè)文件組成,一個(gè)文件中編寫(xiě)main函數(shù),另一個(gè)文件中編寫(xiě)素?cái)?shù)判斷的函數(shù)。使用文件包含的方式實(shí)現(xiàn)。試編寫(xiě)相應(yīng)程序。解答:10三角形面積為:area二x(s一a)x(s一b)x(s-c)s=(a+b+c)/2其中a、b、c分別是三角形的3條邊。請(qǐng)分別定義計(jì)算s和area的宏。再使用函數(shù)實(shí)現(xiàn),比較兩者在形式上和使用上的區(qū)別。解答:(1)使用宏

16、實(shí)現(xiàn)#include#include#defineS(a,b,c)(a)+(b)+(c)/2#defineAREA(s,a,b,c)sqrt(s)*(s)-(a)*(s)-(b)*(s)-(c)intmain(void)doublea,b,c,s;printf(inputa,b,c:);scanf(%lf%lf%lf,&a,&b,&c);s=S(a,b,c);printf(s=%lf,area=%lfn,s,AREA(s,a,b,c);return0;(2)使用函數(shù)實(shí)現(xiàn)#include#includedoublef1(doublea,doubleb,doublec)return(a+b+c)/2;doublef2(doubles,doublea,doubleb,doublec)returnsqrt(s*(s-a)*(s-b)*(s-c);intmain(void)doublea,b,c,s;printf(inputa,b,c:);scanf(%lf%lf%lf,&a,&b,&c);s=f1(a,b,c);printf(s=%lf,area=%lfn,s,f2(s,a,b,c);return0;

展開(kāi)閱讀全文
溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!