


版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第10章 函數(shù)與程序結(jié)構(gòu)【練習(xí)10-1】使用遞歸函數(shù)計(jì)算1到n之和:若要用遞歸函數(shù)計(jì)算sum=1+2+3+…+nn為正整數(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解答:①M(fèi)IN(a,b):a,b#defineMIN(a,b) (a<b)?a:b②ISLOWER(c):c#define ISLOWER(c) (c>='a'&&c<='z')③ISLEAP(y):y#defineISLEAP(y) (y%4==0&&y%100!=0)||y%400==0)④CIRFER(r):r#definePI 3.14159#defineCIRFER(r) 2*PI*(r)10-33形式上和使用上的區(qū)別。解答:函數(shù)實(shí)現(xiàn)intmax(intx,inty,intz){intt;if(x>=y)if(x>=z)elset=z;elseif(y>=z)elset=z;returnt;}宏實(shí)現(xiàn)#defineMAX(x,y,z) x>=y?(x>=z?x:z):(y>=z?y:z)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.”stdio.h” B.”string.h”D.”ctype.h”C.”math.h”2.對(duì)于以下遞歸函數(shù)f,調(diào)用f(4),其返回值為intf(intn)A。{ if(n) returnf(n-1)+elsereturnn;}A.10 B.4 C.0 D3.執(zhí)行下列程序:#defineMA(x,i=5;i=MA(i,i+后變量i的值應(yīng)為 By) (x*y)1)–7;。A.30D.1B.19C.234.宏定義“#defineDIV(a,b)開(kāi)后是 A 。a/b”,DIV(x+5,y-5)引用,替換展A.x+5/y-5B.(x+5/y–5)C.(x+5)/(y-5)D.(x+5)/(y-5);5.定義帶參數(shù)的宏“#definea、b的值進(jìn)行交換,下列表述中哪個(gè)是正確的 CJH(a,b,t)t。=a;a=b;b=t”,對(duì)兩個(gè)參數(shù)A.a(chǎn)bB.a(chǎn)、b、tC.不定義參數(shù)t將導(dǎo)致運(yùn)行錯(cuò)誤 D.不需要定義參數(shù)a、b、t類(lèi)型執(zhí)行下面程序,正確的輸出是 A 。intx=5,y=voidswap(){ intz;z=x; x=y; y=z;}intmain(void){intx=3,y=swap();printf("%d,%d\n",x,y)return0;}A.3,8 B.8,3 C.5,7 D.7,5下面說(shuō)法中正確的是 A 。AC以降低模塊間的耦合度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ū)(堆棧)溢出二、填空題1.C語(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í)顚?xiě)程序段B中相應(yīng)語(yǔ)句。程序段A:intf(intn){ if(n<=1)returnelsereturnf(n-1)+f(n-2);}程序B:intf(intn){ _intt,t0,t0=0;t1=1;t=n;while(_n>1_){t=_t0+t1_;t0=t1;t1=t;n--;}return _t;_}5.下面程序用于計(jì)算f(k,power(m,nmn寫(xiě)程序中相應(yīng)語(yǔ)句。#include<stdio.h>intpower(intm,intn){ inti;intfor(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;}下列遞歸程序的輸出結(jié)果為 g=4,g=3,k=6 。#include<stdio.h>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;}下列語(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.判斷滿(mǎn)足條件的三位數(shù):編寫(xiě)一個(gè)函數(shù),利用參數(shù)傳入一個(gè)3位數(shù)n,找出101~n間所有滿(mǎn)足下列兩個(gè)條件的數(shù):它是完全平方數(shù),又有兩位數(shù)字相同,如144、676等,函數(shù)返回找出這樣的數(shù)據(jù)的個(gè)數(shù)。試編寫(xiě)相應(yīng)程序。解答:#include<stdio.h>#include<math.h>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;}2.n(n>0n<=10),1!+2!+3!+……n!fact(nndoubl。試編寫(xiě)相應(yīng)程序。解答:#include<stdio.h>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;}xxn,x相應(yīng)程序。解答:#include<stdio.h>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;elseresult=x*power(x,(n-1));returnresult;}xn,一個(gè)函數(shù)。f(x,n)=x-x2+x3-x4+…+(-1)n-1x試編寫(xiě)相應(yīng)程序。解答:#include<stdio.h>#include<math.h>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);}ack(m,nmnAckermenn的值:n+1 m=0ack(m,n)= ack(m-1,1) ack(m-1,ack(m,n-1)) 試編寫(xiě)相應(yīng)程序。解答:#include<stdio.h>intAck(intm,intn);intmain(void){intm,n;intscanf("%d%d",&m,&n);result=Ack(m,n);printf("Ackerman(%d,%d)=%d\n",m,n,result);return0;}intAck(intm,intn){if(m==0)returnelse if(n==0&&m>0)returnAck(m-1,1);else if(m>0&&n>0)returnAck(m-1,Ack(m,n-1));}Fabonaccif(n)=f(n-2)+f(n-1)(n>1)f(0)=0,f(1)=1。解答:#include<stdio.h>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;}求定義并調(diào)用函數(shù)dectobini(n),它的功能是輸出n解答:#include<stdio.h>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;elseresult=dectobini(n/2)*10+n%2;returnresult;}遞歸實(shí)現(xiàn)順序輸出整數(shù):輸入一個(gè)正整數(shù)n,位順序輸出的遞歸函數(shù)。試編寫(xiě)相應(yīng)程序。解答:#include<stdio.h>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);}main解答:三角形面積為:area=s(sa)(sb)s)
s=(a+b+c)/2其中a、b、c分別是三角形的3條邊。請(qǐng)分別定義計(jì)算s和area的宏。再使用函數(shù)實(shí)現(xiàn),比較兩者在形式上和使用上的區(qū)別。解答:使用宏實(shí)現(xiàn)#include<stdio.h>#in
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年陶瓷機(jī)械行業(yè)當(dāng)前發(fā)展趨勢(shì)與投資機(jī)遇洞察報(bào)告
- 收營(yíng)員基礎(chǔ)知識(shí)培訓(xùn)課件
- 操作安全知識(shí)培訓(xùn)心得課件
- 2025年面點(diǎn)烹飪師職業(yè)技能資格知識(shí)考試題與答案
- 2024年玩具設(shè)計(jì)師、制作工專(zhuān)業(yè)技術(shù)及理論知識(shí)考試題庫(kù)(附含答案)
- 2025-2024年安全培訓(xùn)試題附完整答案(歷年真題)
- 2025公需課數(shù)字中國(guó)數(shù)字化建設(shè)與發(fā)展試題庫(kù)與答案
- 2024年全國(guó)執(zhí)業(yè)獸醫(yī)(動(dòng)物、畜禽病理學(xué))專(zhuān)業(yè)知識(shí)考試題與答案
- 2025年社會(huì)工作者之初級(jí)社會(huì)綜合能力能力檢測(cè)試卷B卷附答案
- 2024年化妝師高級(jí)《化妝師技術(shù)及化妝品安全使用》從業(yè)資格證考試題與答案
- 多媒體教室使用的課件
- 2025年下半年廣西現(xiàn)代物流集團(tuán)社會(huì)招聘校園招聘筆試參考題庫(kù)附帶答案詳解(10套)
- 2025年小學(xué)教研室教學(xué)計(jì)劃
- 2025年福建省中小學(xué)教師招聘考試試卷-教育綜合基礎(chǔ)知識(shí)試題及答案
- 會(huì)展物品租賃管理辦法
- 2025年安徽省初中學(xué)業(yè)水平考試中考物理真題試卷(中考真題+答案)
- 高中英語(yǔ)必背3500單詞表完整版
- 電網(wǎng)工程設(shè)備材料信息參考價(jià)2025年第一季度
- 貸款押金合同協(xié)議書(shū)范本
- 口腔解剖生理學(xué)顳下頜關(guān)節(jié)精選課件
- 物料斷點(diǎn)管理辦法新舊狀態(tài)零部件切換的交替點(diǎn)管理程序
評(píng)論
0/150
提交評(píng)論