西南交大C++实验13.doc

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验13实验报告教学班级:________学生学号:__________学生姓名:__________实验日期:_______实验地点:指导教师签名:__________实验成绩:___________一、实验目的1.理解变量作用域,掌握局部变量和全局变量的使用方法;2.掌握函数调用过程中的参数传递方法。3.理解递推的概念,掌握递归函数的基本使用方法;二、实验任务1.求数组元素和值。1)主函数定义整型数组a[10],数组元素值a[j]=2*j+1,输出a数组;2)编一子函数,将主函数传递来的数组元素值改变为其前面所有数组元素的和值(包括该数组元素自身值),子函数头要求为sum(inta[],intn),n用于传递数组的大小;3)主函数中输出改变后的a数组。2.求自然数对。1)编写一子函数,判断两个自然数x,y是否是自然数对(所谓自然数对是指两个自然数的和与差都是平方数,如:17-8=9,17+8=25);2)调用子函数在0x=50,0y=50且x!=y范围内找出全部自然数对。3.斐波那契数列。1)主函数功能:求出斐波那契数列的前n项存入数组a[20]中,开始两项均为1,将子函数反序存放后的结果输出;2)子函数功能:将主函数求出的斐波那契数列前n项反序存放。函数头要求为voidfbnq(int*p,intn),p指向数组a。4.编程实现:将有序数组有序合并。1)有两个从小到大的整型有序数组a和b,编一子函数将这两个数组合并为从小到大的有序数组c,整个合并过程中c保持有序;2)子函数头要求为voidmerge(inta[],intb[],intc[],intm,intn),m用来传递a数组元素个数,n传递b数组元素个数。5.实现功能:已知数列2,6,14,30,……,计算该数列的第n项。其中的递推关系为:f(n)={2(n=1)f(n−1)+2n(n1)编程要求:1)主函数功能:从键盘输入n值,通过调用子函数计算数列的第n项并输出。2)子函数功能:使用递归法,计算数列2,6,14,30,……,的第n项。三、实验结果(源程序+注释)1.#includeiostream#includeiomanipusingnamespacestd;voidmain(){cout学号:姓名:endl;cout=========================================endl;inta[10],n,j;voidsum(inta[],intn);cout请输入数组a元素的个数:endl;cinn;for(j=0;jn;j++)a[j]=2*j+1;cout数组a为:endl;for(j=0;jn;j++)couta[j]setw(5);coutendl;sum(a,n);cout改变后的a数组为:endl;for(j=0;jn;j++)couta[j]setw(5);coutendl;}voidsum(inta[],intn){intb[10]={0};inti,j;for(i=0;in;i++)for(j=0;j=i;j++)b[i]=b[i]+a[j];for(i=0;in;i++)a[i]=b[i];}2.#includeiostream#includeiomanipusingnamespacestd;voidmain(){cout学号:姓名:endl;cout=========================================endl;intx,y;boolfun(int,int);cout请输入2个自然数:endl;cinxy;if(fun(x,y))coutx与y是自然数对endl;elsecoutx与y不是自然数对endl;cout在0x=50,0y=50且x不等于y范围内的自然数对有:endl;for(x=1;x=50;x++)for(y=1;y=50;y++)if(xy)if(fun(x,y))coutx和ysetw(3);coutendl;}boolfun(intx,inty){inta,b,c,i,j;if(xy){c=x;x=y;y=c;}a=x+y;b=x-y;for(i=1;ia;i++)if(a==i*i)break;for(j=1;jb;j++)if(b==j*j)break;if(ia&&jb)returntrue;elsereturnfalse;}3.#includeiostream#includeiomanipusingnamespacestd;voidmain(){cout学号:姓名:endl;cout=========================================endl;inta[20]={1,1},n,i;voidfbnq(int*p,intn);cout请输入斐波那契数列的项数n:;cinn;for(i=2;in;i++)a[i]=a[i-1]+a[i-2];fbnq(a,n);cout子函数反序存放后的结果为:endl;for(i=0;in;i++)couta[i]setw(5);coutendl;}voidfbnq(int*p,intn){inti,j,temp;for(i=0,j=n-1;ij;i++,j--)temp=*(p+i);*(p+i)=*(p+j);*(p+j)=temp;}4、#includeiostream#includeiomanipusingnamespacestd;voidmain(){cout学号:2017110564姓名:谭时铵endl;cout=========================================endl;inta[20],b[20],c[40],m,n;inti;voidmerge(inta[],intb[],intc[],intm,intn);cout请输入整型有序数组a(从小到大)的元素个数:;cinm;cout数组a的元素(从小到大)为:endl;for(i=0;im;i++)cina[i];cout请输入整型有序数组b(从小到大)的元素个数:;cinn;cout数组b的元素(从小到大)为:endl;for(i=0;in;i++)cinb[i];merge(a,b,c,m,n);cout合并后的有序数组C的元素为(从小到大):endl;for(i=0;im+n;i++)coutsetw(6)c[i];coutendl;}voidmerge(inta[],intb[],intc[],intm,intn){inti,j,k;i=j=k=0;while(im&&jn)if(a[i]b[j]){c[k++]=a[i];i++;}else{c[k++]=b[j];j++;}if(im)for(;im;i++)c[k++]=a[i];if(jn)for(;jn;j++)c[k++]=b[j];}5、#includeiostream#includeiomanipusingnamespacestd;voidmain(){cout学号:endl;cout=========================================endl;intn;intf(int);cout从键盘输入n值:;cinn;cout该数列的第n项为f(n)endl;}intf(intn){doublex;x=2;if(n==1)returnx;elsereturnf(n-1)+pow(x,n);}

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功