实验05函数结构程序设计_第1页
实验05函数结构程序设计_第2页
实验05函数结构程序设计_第3页
实验05函数结构程序设计_第4页
实验05函数结构程序设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验05函数结构程序设计班级:A学号:C语言姓名:A第1题第2题第3题第4题第5题总成绩第6题第7题第8题第9题第10题选做题一.【实验目的】1、熟练掌握函数的定义、声明和调用。2、熟练掌握使用函数编写程序。3、掌握函数的实参、形参和返回值的概念及使用。二.【实验内容】1、【程序示例】程序功能:输入一个正整数 n,计算s=1+1/2!+.…+1/n! 的前n项的和(保留4位小数),要求:定义并调用函数fact(n)计算n的阶乘。【打开“第1题”文件夹中名为proj5_1.c文件,阅读完善程序并保存】:【解题思路】:A.本题要求采用主函数调用子函数的程序结构。主函数使用单重循环结构,每次调用子函数返回第i项的分母i!并计算第i项,然后累加第i项。子函数使用单重循环结构,计算i!并返回计算结果。由于循环次数已知,一般选用 for语句。B.函数设计:子函数fact:计算n!并返回计算结果。函数返回值类型:double型。函数参数:一个int型参数,代表要计算阶乘的某个整数。函数体:计算n!。n!=1*2*3*…*n,它是一个连乘式,使用单重循环来实现。计算式为 product=product*i,product初值为1,i从1变化到n。用类for语句表示如下:product=1;for(i=1;i<=n;i++)product=product*i;主函数main():计算多项式s=1+1/2!+1/3!+…+1/n!的前n项和,使用单重循环实现。计算式为sum=sum+item,sum初值设为0,item从1/1!变化到第1/n!。在求累加和的循环结构中,每次完成计算item(即1/i!,i!需调用fact函数)、累加item两项操作。用类for语句表示如下:sum=0;for(i=1;i<=100;i++){item=1/fact(i); /*调用fact函数计算i!*/sum=sum+item;}完善的程序段】:产请在两条星线之间填入相应的代码,声明出函数”/・率・•本•**•**,♦*申草率夺**■*:Q*♦申率*率***申・***事*******//doiiblcfactfinto):-/#事•*本♦中阜•****■*•申******鼻■•申.申申字率*********申・申・中・审/力产请在两条星线之何填入相应的代码,计算5=1+1疗什…一1后!的值M审中•******€************************#中@********* ******fb《i=l:i<=100:i++){vf*涧川宿ct南敷计算l!*msiim=suti]^itemib/*****«中*********申*********中**************************中*****<产请在两条星线之间嬉入相应的代码.计嵬n!的值*/*/・卡**拿■******,***®*串*聿*****拿*/******事申率*多事*率事*零尊尊尊**群********<fbi:tproduct=l.i=lii--n..ij+)product*=i:-/*中/争平*卡・多**#拿充布塞布卡京#事/***事*多中杂本杂*修****雪*考本*布串*窜*芈聿*******尊*/*【调试、运行程序】运行结果:输入一个正整数: 51+1/2!+…+1/5!=1.7167【源程序代码截屏】Vindudo"stdio^h"voidnain()《intiPn;doubleitpma5UR;/*ite时母卫量,5un-天口变量*//叫青在两条星线之间填入相应的代码.声明仙M函数蔷// 事♦珏番哥哥詈哥哥**香**■***哥野春*寻哥哥哥哥圣不哥哥香哥希■善/doublefjct(intn);/,事崔41餐—粤曷•$—崔«■・耳注・鲁"的讦('输入一个正整数i /*输入提示7scanfC^d",Rn);/亚青在两条星线间填入相应代码,首尊钎1TG,■…的值*/八要入调用函数/前口国)计算n的阶乘**//H,黄■"看青哥・哥青青哥青障青青青藤■♦♦■替・开看■青♦・膏誉景青・青膏餐哥哥圣哥・青sum=M;foreign;l<=iHH;i++)<iten=i/Fact(l);sum-suR+iten:)/*署署长:■■*■势*与****,******************呆缶*暑**»**,**菁*/printF(-1+1/2T*--.*Vl(i?-X9*4f\n\n.5un);/*输出结果*/)duubleFdcL(intn)八定文本M的函数*/<doubleproduct;/*连乘芟星*/int1;/武青在两条星线间填入相应代码.计算□,*/-<■【运行结果截屏】■1*C:\Userfi'2hu'LDes<top\Debug\pn输入4正整数;51£/2!七一-1/5kL71S3PrGSS区口V雇了tocontinue2、【程序模仿】程序功能:输入一个正整数 n和一个实数x(x范围在区间[-6.28,+6.28]之间),计算TOC\o"1-5"\h\z0 2 4 6x x x x cos(x)=—————十—————+A的前n项的和(保留4位小数),要求:定义并调用函数 fact(n)计算n0! 2! 4! 6!的阶乘,定义并调用函数 power(x,n)计算xn。【打开“第2”题文件夹中名为proj5_2.c文件,在指定位置添加语句,完善程序并保存】 :【解题提示】:认真阅读并理解第1题的解题思路和程序清单,思考以下几个问题,寻找本题的解题方法。A.循环语句选择问题?选择for、while还是do-while。B.比较募函数与阶乘函数的连乘变量初值、连乘式有何不同?

【测试数据】(1)输入:50输出:1.0000(2)输入:51.57输出:0.0008【源程序代码截屏】:Uinclude"stdio.h**uoidnuin()(inti,nfFlag;/*口叫-符号变量,在T交替变化*/dnuhlpxpi^un;/*itpm-J页变量.sum-和变量*//*i音在两条星战之间填入相应的代码.声明)口吐困数和pn帕「因数,//果簧展11Htit*集,睡差*******釜*************需鬓*W差**簧*«~»挂4丞rmuhieFactCintn);doublepouter(doublexflotn):prinlFL输入一个正整数n和一个实数币•,):/*输入提示*/%canF(2傀lF'.&n,&x);Z青在两蜃星线间填人理座岱码,投给定公式求5式0Z青在两蜃星线间填人理座岱码,投给定公式求5式0的近似值•//*蓼求]调用明数fact求盼乘.谪角函/power求累函数力,,sum■0;for(1-1;i<-in;£*+)iF(iV?-9HiF(iV?-9Hitem=powerti)/fact(i);else{item=-power(xFi)/fact(i);>sumitem;【运行结果截屏】3、【程序示例】程序功能:输入两个正整数 m【运行结果截屏】3、【程序示例】程序功能:输入两个正整数 m和n,求m和n的最大公约数。要求:定义并调用函数gys(m,n)求m和n的最大公约数。【打开“第3”题文件夹中名为proj5_3.c文件,阅读完善程序并保存】:【解题思路】m和n的最大公约数。子A.本题要求采用主函数调用子函数的程序结构。主函数调用子函数返回函数计算mm和n的最大公约数。子B.函数设计:子函数gys:求m和n的最大公约数并返回计算结果。函数返回值类型:int型。函数参数:两个int型参数,代表两个求最大公约数的整数。函数体:计算并返回m和n的最大公约数。算法思想:设置变量j代表m和n的最大公约数,其初值等于m和n中较小数,然后循环检查m和n是否能同时整除j,若不能,则将j递减1,继续检查,直到m和n能同时整除j为止,此时j就是最大公约数。由于循环次数未知,选用while或do-while语句。用类while语句表示如下:if(m<n)j=m;elsej=n;while(m%j!=0||n%j!=0) j--;主函数main():输入m和n,调用函数gys(m,n)求最大公约数,最后输出结果。用类for语句表示如下:泮请作两能星线之间埴凡相应由代问,声明心支函救/********************”******■******************1int外父nk,*****尊1:¥率*率*率****丰中丰率**零***丰*丰害****率*****中丰**,芦道在两条星线之间填入相国的代码,调用函数一求m和口的最大公豹数”/意*量**4=寒4主*******号:*±±*号毒寺+±4=**金**4:*屏*业*M士小聿**业*:W杀不*北主上单堂季承奇米北奉/.j=g^皿11);-1/•本••季富・奉率席京・・••拿申•霄津■・・■用拿串・■・*率由*・・拿申却M■霉・,卓摩・•・■****,・・*率用**J收请在两条里蹑之何填人相应由代岗,求山和L的最大公约数也^**5F*tttt***f****»*+**** *******t*♦*****<********j=tn.ekeju>irhile(m。oj\-0 n%it-Q)j—/宇*¥**尊**率*拿率申****中*阴唯8序*¥****=*****整*#本*****年阴*修**¥*彳*****中,r r*【调试、运行程序】:运行结果:输入两个正整数 m和n:182418与24的最大公约数是6【源程序代码截屏】:【源程序代码截屏】:【源程序代码截屏】:【源程序代码截屏】:【源程序代码截屏】:AlnciudP"stdio-h"voidnainO<intni.n.j:/•it在两条星线之间填入相应的代码,声明ws函数♦//*HIHfrJWIhflnltffifr**得餐餐性,款Hr*看景春景景餐・*£景贵餐舞餐・索看£•*事♦/intgysfint(:n);/«*»■***"»*»**■****»***■«**■・***,*******,*»*■■,■/prln"C输入两个正整数畴0%*);/■输入提示•/5canF《*%d\flM.&n);/*在两条星线间填入相应代码,调用函数qys求印匚口的最大公约数*//HMM!MMM-MNMMMIIMlN'MHtt-MlIC«MW■M-MMMHNRM-N-R»«RHN«M-MWWM«■HMMMRMMMM/j=gys(ni,n);*餐"■•*it法餐*餐餐署或餐或詈W每餐****餐*茎•*各*X**#*翼¥*M*XM*/pdntfr钊与%d的最大公约数是*d\n\*n,j);八输出结具7}intgys(intmtintn) /看定义求闲■的最大公约数函数7<Intj;/*i青在两条星线间艰入相应代码,求酢"的最大公约数”/***«4»*»*«*»»»»»***»***«*******«*******«*«*«***«*«/1F(iKn>Jyl"j=n;while(nitj*=O||ntjf=O)j—;/ *餐**需**************并**IHt箸*鲁******餐*着・・鲁/returnj:/*返回结果*/It【运行结果截屏】:111C;\Users\Zhu\PesktopVDebug\prcj53,exe,方入网个止整数m和zIS24&与24的最大公均数是6ressenykeytocontinue4、【程序模仿】程序功能:输入两个正整数 m和n,求m和n的最小公倍数。要求:定义并调用函数gbs(m,n)求m和n的最小公倍数。【打开“第4”题文件夹中名为proj5_4.c文件,阅读完善程序并保存】:【解题提示】:认真阅读并理解第3题的解题思路和程序清单,思考以下几个问题,寻找本题的解题方法。A.子函数gby的设计:设置变量j代表m和n的最小公倍数,其初值等于 m和n中较大数,然后循环检查j是否能同时整除m和n,若不能,则将j递加m与n的较大数,继续检查,直到j能同时整除m和n为止,此时j就是最小公倍数。B.子函数循环语句选择问题?选择for、while还是do-while。国prc_5_*i.ttinclude"stdio-h**voidnain()<intE.n,j;/4青在两条星线之间填入相应的代码,声明g”画数餐//■景景务番景务置*簧线—粕资**共捱*丞城柠圣*於差哥*董*款**叁*亲差**圣景生**/intgbs(intm,intn);««*«««««««**«*««**«««*/prin讦「输入两个正整数ntJM"):”输入提示力scanf(“如散r*.,tun;“在两条星线间埴入相应代码.调用函数gm求/口K的最小公倍数”/景青贵景章贵肾ifnlHIr景景景皆景景折景***音看景普看景景*量it量量景量能*量景量*送量看量量景景景海景/J-gbs(nBn);,■1»*■/,♦,♦・■■—,・—・・杳・・*・・<*曹青*****■・#・<«******/pTiityrg%的最小公倍数是疑\y,**j);/*输出结臬w>intgbsfintn(intn) /良义求厕■的最小去信数函数{inttemp,j;/吨青在两条星线间填入相应代码.求酢⑪的最小公倍数”»»»»«««»»«*»«»««»»4»*»««»*4»*»««»»«»«/if(m>n)j=mttenp=m;elsej=nttenpin;while(j%n^'O||j%n!'G)j*-tp(np;・LUI,T-B【运行结果截屏】:\Users\ZhuXDeskiop\Deb□g\p「oj5_4.exe*|输入两i、lL整数hi和ii:523B与25的最小公倍数是25?Pressanykeytocontinue5、【程序示例】程序功能:输入一个正整数n,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。要求定义并调用函数prime(n)判断n是否为素数。【打开“第5题”文件夹中名为proj5_5.c文件,阅读完善程序并保存】:【解题思路】:A.本题要求采用主函数调用子函数的程序结构。主函数调用子函数返回判定结果。子函数判定整数n是否素数并返回判定结果。B.从输出结果程序段if语句中的条件“flag==1"可知,flag是标志变量,1代表素数,0代表非素数。C.函数设计:子函数prime:判定整数n是否素数并返回判定结果。函数返回值类型:int型。函数参数:一个int型参数,代表要判定是否素数的整数。函数体:判定整数n是否素数并返回判定结果。算法步骤如下:a)设置变量flag的初值,若n是1,则将flag初值置0,表示n不是素数,否则,将flag初值置1。b)循环检查n能否被[2,n/2]间的整数整除,若都不能整除,则 n是素数,否则n非素数,将flag置0并退出循环。由于循环次数已知,选用for语句。用类for语句表示如下:if(n==1)flag=0;elseflag=1;for(i=2;i<=n⑵i++)if(n%i==0){flag=0;break;}c)返回flago主函数main():输入n,调用子函数prime(n)返回判定结果,最后根据返回值输出结果。【完善的程序段】:■*洁止两条吊线之阿埴人相应的代码.*明prim亡商救小,intprime(intn>>,**********************•*************************/*产请在两条星线之间填入相应的代码,调用函数piinw利定口是否是素数3产*****4i*****★・**■•***********常*中■***♦**■**・■*杂***充♦*♦*****11***■卡?lliig-prmidii)<:*****京*******守*********拿**********************眩**********肃******.,产请在两条显线之间填入相应的代码,判定II是否是素数5/寺***•聿****•**东******拿电市********电**率****尊♦***率*拿**:多**八if(1】r=l)flay^O;elseflag-1ibili=2:i<=n2;i^+X1戈】1%=0){fl晔fO;break;)।***********申***巾***********中*********中************M**,.」/*请在两条星线之间填入相应的代码,声明prime函数*//************************************************/intprime(intn);/************************************************//*请在两条星线之间填入相应的代码,调用函数/*请在两条星线之间填入相应的代码,调用函数prime判定n是否是素数*//****************************************************************/flag=prime(n);/****************************************************************//*请在两条星线之间填入相应的代码,判定n是否是素数 *//*****************************************************/if(n==1)flag=0;elseflag=1;for(i=2;i<=n⑵i++)if(n%i==0){flag=0;break;}/*****************************************************/【调试、运行程序】:6NO29YES6NO29YES【源程序代码截屏】

周卬可5-5工ictn.Hag;/*"知-标志变量,1代表素数,M弋表非家数*,/*音在两条星线之间慎入相应的代码.声明PH唯函数Wintprlnie(intn):/W***,*籍*it*****詈***圣圣*藩**番*M藩*戏海豪M青・量・M<flrW**Jt**«r***«fr裾*^4r/printFC输入一个正整数5“);/*输入提示*/5canf(IBU*S&n);人在两条星线间填入相应代码,调用函数P这曜判定。是否是素数'//KKHVIKMMMKMHM<MM«BW«H»«H«Bfli«H»«MM»MMHMKMHUlfKHHKKHHK<M««/Flag=prin»?(n);**M~«W9fr餐*费***乘**普普*弄*■**■*开拼・■署普*一*集*******/八输出结果*/if(flag-1)prLatF(11YES\nM);elseprbitF(“孙>intprinp(intn) ,*定义判定n是否素数的因数”inri.Fiaj;f门的一标志变量,i代表素数,M弋表非素数*</听着在两条星线间填入相应代码,判定n是否是素数■//*««*»»**»!*«»««»«*««*««*«*»«**«if(n-=1)Flag=*t?”eflag-1;for(1=2;i<"in/2;i*+)1F(mU*"0)(f149"B;bre4k;}/MNMWieMMNM14HMWNIt14 «H41ItHIItW««»«««««MMttflMK14MMHMMHMMM■fl/returnFlag;/*返回结果*/【运行结果截屏】:■'IrC:\Uscrs\Zhu\Dcsktop\Dcbug\prJ■!"C:\JseisVhu\Desk:op\D输入一个正整数n:29■!"C:\JseisVhu\Desk:op\D输入•个正整散m6koYES输入•个正整散m6koPressanvkevtocontinue---if^ #6、【程序模仿】程序功能:输入两个正整数 m和n(1<=m<=n<=500),统计并输出m到n之间的素数个数以及这些素数和(素数就是只能被 1和自身整除的正整数,1不是素数,2是素数)。要求定义并调用函数prime(n)判断n是否为素数。【打开“第6题”文件夹中名为proj5_6.c文件,阅读完善程序并保存】:【解题提示】:认真阅读并理解第5题的解题思路和程序清单,思考以下几个问题,寻找本题的解题方法。A.子函数prime的设计:算法提示请参考第 5题,与第5题有何不同?。B.主函数设计:如何实现求计数与累加? flag、count、sum几个变量的含义。【源程序代码截屏】国国^includeMstdloah"i,n;int11叫,countcun;“门叫-标志变量,1代表素数,咕表非素数”/4青在两条星线之间填入相应的代娉,声明Pri皿因数*,1ntprlnr(Intn);/**景******,***»,*三**餐**鼻胃**胃**********景***,******畀**#*青餐**-餐/p门n”「输入两个正整数响2伏=水=似=5皿)[”);八辅人提示•/5canf("Zrilfi'^ni^n);I ,哝两条星线间填入相应代码-统计库1|口间的素数个数及素数和卬/count-O;sup^0;for(l-n;i<-nflag=prime(i):if(flag==1)<co«jr»t+=1Bsum+=i;>}/*>>*«*#«»««#«#•<#*****»*»#***#»***<**#*<******#***«■>«»#<««*//*输出结果”、 ^prinlf「Rd到常(I之间的素数个数=V1,拳数和=%d、n”,“.n.cuuiit.sum);)intprinetintn) /*定义判定椁是否辜数的臼款一/intijlag;/*flag标志变量♦1代表素教,哦表非素数*/“清在两条星线间填入相应代吗,判定n是否是素敌”/■,1【运行结果截屏】:■1"C:\U5e『5\Zhu\Desktc)mbug\p「oj5_6.exe'俞入两个正砥数m和Mk=w〈=M=500);48s到明之间的素数个数=21.求数和=869ressanykeytocontinue7、【程序示例】程序功能:输入一个长整数 m和一个数字d,统计并输出m中包含数字d的个数。要求定义并调用函数countdigit(m,d),统计整数m中包含数字d的个数。例如:调用函数countdigit(10090,0)返回10090中数字0的个数,返回值是3。【打开“第7题”文件夹中名为proj5_7.c文件,阅读完善程序并保存】:【解题思路】:A.本题要求采用主函数调用子函数的程序结构。主函数调用子函数返回结果。子函数统计长整型m中包含数字d的个数。B.从主函数输出结果程序段可知, in是长整数,d是某数字,count是in中包括d的个数。C.函数设计:子函数countdigit:统计长整数m中包含数字d的个数。函数返回值类型:int型。函数参数:两个参数,一个long型,一个int型。函数体:统计长整数m中包含数字d的个数。算法步骤如下:a)设置计数变量count初始值为0。b)假定长整数m,循环分离出m的末位数,若末位数等于数字 d,则计数变量count加1,再去掉m的末位数,直到m等于0为止。由于循环次数未知,选用while或do-while语句。用类while语句表示如下:count=0;while(m!=0){count=0;while(m!=0){gw=m%10;if(gw==d)count++;m=m/10;}/*计数器变量初始化 *//*当m!=0时,执行循环 *//*取m的末位数*//*计数*//*去掉m的末位数*/c)返回count。主函数main():输入长整数in和数字d,调用子函数countdigit(in,d)函数返回结果,最后根据返回值输出结果。【调试、运行程序】:运行结果:输入一个长整数 m和一个数字d:10103401 110103401中包含数字1的个数3【源程序代码截屏】:*1nclude"stdio.h"voidMint)<intcount«<l;longin;/*请在两条星线之间埴入相应的代码,声明cuinitdigit函数•//****«-«*,*——立-*««:»*****MrftIt许★#得***集***■******•*-«,,«婚一—inicQ(intdiqit(longn,intd);「门口小广揄入一个长整数而一个数字北“尺八输入提示-/xWBgr.cdii.&ih/嘴近两条星线间填入相应代科.统廿代整型变量余中包含数字。的个数"八要求:countdigit(num)Bjdigi。函赳*//狂弃M*■每看握系手为翼振甜鼻掘索法独疏球餐或硅餐陪睢餐睢譬杀塞并毒叁杀・雪¥圣东*****=养短番痛就看权武或架/count-countdigit(in,d);printH'%"中包含数字如的个数*d\n”,i*d,count);)intcountdigit(longm,intd) /*定义countdigit(m,d)函数*/{,intdigit,count;,旺青在两条星线间填入相应的代码,求整数。中包含数字d的介数”/***>»-*>»»*■*<>■«««-*<**«*-***<*«*<<ik*>**--***■***-**■»*«*«««/count=0;whil«(Rt"6)<8、【程序模仿】程序功能:输入两个正整数 m和n(1<=m<=n<=1000),输出m到n间所有满足各位数字的立方和等于它本身的数并统计这些数的个数与总和。要求定义并调用函数 is(number),判断number的各位数字之立方和是否等于它本身。【打开“第8题”文件夹中名为proj5_8.c文件,阅读完善程序并保存】:【解题提示】:认真阅读并理解第7题的解题思路和程序清单,思考以下几个问题,寻找本题的解题方法。A.子函数is的设计问题:算法请参考第7题,与第7题有何不同?B.主函数的设计问题:计数与累加和如何实现?【源程序代码截屏】:uolo帽:Ln。<int1Bm.n;intcount»sutn;/*c—nt-计数变量,w-累加和爽量•//4青在两条星线之间填入相应的代码,声明人函数*//*餐*■青*餐***餐*青*片餐蚌餐餐/*册幡*************青餐******/iritis(intnumber);/■■■货**4*"1t**-187#*1*1***■幄*******★—*****it*餐*,餐/量餐/prints*输入两个壑数福口门;");/*输入提示*/scanf &m,&n);“在两条星罐间埴入相良代码,洵货唯m间所有满足各位数字的立方和等于它本身的教“/年统计豉咚数的个裁与袅和,要SO包做i5(nuitber).//NINlfNNXHKMMIKNKMMKMMMNMMMMItNIMKflllllNttNHNNSMKjtNHRNltNMMttNRItMMNMNMNNltMMMINitNNKNKMtMKNycounted;sum-0;For(i-m;i<,-n;i»*)(iF(is(i)--i)<printFC%dp'Si);count**;sum+-i;/善斗—郦善黑■科■W1看善注善祷看梅梅格•梅・*<<***«*<<#**#>>*«***#«务・-♦>=•番*M■•■■■・事・■萎事■★・<1・■•■/“输出统计费*/ 一一幺八… Fppin讦r\n就刽纪可满足条件的数的个数等于电明累加和等于*d\rr・m.n.c(MJnt.5Uin》;>intis(intnuntier)/,定, numberIJI【运行结果截屏】:■J1C:\User$\Zhu\Desktop\Debug\prcj58.exe"输入两个整数卬和n:100200153,100到其0间满足条件的数的个数等于L累加和好于153Pressanykeytocontinue9、【程序示例】程序功能:定义递归函数 fact(n)计算表达式t=n!的值(n>=0)。在主函数中输入n,调用递归函数fact(n)求出t的值,最后输出t值。程序运行结果如下图。苗相「5值二535?的值;12g【打开“第9题”文件夹中名为proj5_9.c文件,阅读完善程序并保存】:【解题思路】:A.本题采用主函数调用子函数的程序结构。子函数计算n!。B.子函数fact设计:使用递归函数实现求 n!。递归函数设计应抓住一下两个关键点。递归出口:即递归的结束条件,本例为当 n=0或1时,n!等于1.【源程序代码截屏】【源程序代码截屏】【源程序代码截屏】【源程序代码截屏】if结构表示如下:if(n==011n==1) s=1;elses=n*fact(n-1);returns;/*if结构表示如下:if(n==011n==1) s=1;elses=n*fact(n-1);returns;/*递归出口*//*递归式*//*返回结果*/完善的程序段】:/*请在两条星线之间填入相应的代叫调用fhct函数求t的值F/窣辛隼字等字半拿辛军丰辛辛宇零字零半字丰奉丰字孝辛丰华丰辛*辛辛字零辛*字字字字窣半半字半字学字字军芈军辛辛字宰At=fact(u);-/******本;t*****4;***志**********************************#***/,产请在两条星线之间填入相应的代码,要使用递归舞法『麻林琳*&**2*****小*********曲廿*******!* **************{遛11=1)8=1;,elses=n*fect(n-l);(jrehunsn*东东本*卡本*东**聿*卡*京**★*木木,*******■本***率***太*1****;*/(【调试、运行程序】:运行结果:请输入n值:5t=5!的值:120递归式:递归表达式,本例为n!=n*(n-1)!。递归函数的具体实现可借助分支结构实现,本例用类 iE)E)•include<stdlo.h>voidmain])<liitn;doublet;doublefdctfintn);prints”请输入n值二,);scanf("ltd",Gn);,4青在两条星线之间填入相应的代码,调用「师函数求t的值”yN1N«NMMM-MMWMHMNNHMMItNNtlHNWNMNNNKaMKHINKMMHHMMMMMMHMKM/t-fact(n);pTntF(”t-和I,的值:teW,nft);)“定义递归函数,求t・n,T*2.…・n的值*/doubleFact(intn){doublesj,旺青在两条星线之间填入相应的代码《注;要使用递归算法〉"/立■»♦音■***景分番*******番羌***暑善*看*餐******现番・暑餐•景注音/ifCn-^OI|n-1)s^1;elses=n»Fact(n-1);y■基兽*抽«■»»***・****•兽餐•餐餐♦景・兽圣餐詈餐•圣餐"务餐量梅・圣・鲁量return£;【运行结果截屏】|请输入口值:【运行结果截屏】|请输入口值:5也=5!的值:1.200000e+002Pressanykeytocontinue10、【程序模仿】程序功能:定义递归函数 fun(n)计算表达式t=1*3*5*7*…*(2n-1)的值(n>=1)。在主函数中输入n,调用递归函数fun(n)求出t的值,最后输出t值。程序运行结果如下图。求士■1*3*5*7*…*<2nT>的[直请输入力值:5的1r直:94区【打开“第10题”文件夹中名为proj5_10.c文件,阅读完善程序并保存】:【解题提示】:认真阅读并理解第9题的解题思路和程序清单,思考以下几个问题,寻找本题的解题方法。A.子函数fun的设计:请参考第9题,与第9题有何不同?递归公式如下:1t=1t=f(n)=*f(n-2),当n=1时当n.1时B.cin和cout是C++4的输入与输出操作。【源程序代码截屏】国中—工fflnciude<stdinuni(1nain()(longt;intn;lonqfun(lntn);prii吐 求t・1*3蜃5*7♦…的值、n**):printF("请输入n喳:“);scanf("^d'\Gn);/M音在两条星线之间埴入相应的代码,调用仙n函数求I的值,/t=Fun(n);/**,**********************餐****餐・****・♦**•**********★/printer1*8i如的值:-n”.2*nT,t);>/母定义递归函数,求7"3*5至7—・(而・力的值・/Lofiqfunfintn)(lung5;/』青在两条星线之间埴入相应的代码(注.要使用镭归算法),/,■■修■修・餐■■■■1■事・・餐・■・■・餐・事■■■■■・・也・・・■■■■・■■■■■・■/iF(n*-1)s*1;elses-(2*«-1)»fun(n-1);/*it幡・*景■像■・景・,it-景・景it・廿餐-It『*・*,■•**WMitMMttitMMUNMHitit*Ntt»iM/return5;【运行结果截屏】O'C:\User&\Zhu\De^ktop\Debug\proi5_10.exe求广1噂3*5*7*,***(2口-1)的位.语输入n值:6L*3*3*U的值;10395Pressanykeytocontinue11、【选作独立编程题】程序功能:输入两个正整数m和n(1<=m<=n<=10000),输出第m项至第n项之间所有的Fibonacci数。Fibonacci序列(第1项起):1123581321…。要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。例如,fib(7)的返回值是13。程序运行结果如下图。

【编程实现程序功能,然后以 pro5_11.c为文件名保存在“第11题”文件夹中】:【解题提示】:认真阅读并理解第1题、第3题、第5题、第7题的解题思路和程序清单,思考以下几个问题,寻找本题的解题方法。A.程序结构问题:主函数调用子函数结构。B.子函数fib(n)设计:递推法,从前往后递推,递推公式: fn=fn-1+fn-2,即根据前两项推出下一项。采用单重循环结构实现,从第3项开始,逐项推出第n项。注意:递推过程需要迭代:设计三个变量a1、a2和a,其中a1代表第n-2项,a2代表第n-1项,a表示第n项,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论