《2022年c程序设计方案实验八.docx》由会员分享,可在线阅读,更多相关《2022年c程序设计方案实验八.docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品学习资源1. 试验目的试验八欢迎下载精品学习资源( 1)初步学会指针数组的定义与使用方法;( 2)明白指向一维数组的指针变量的概念,能用指向一维数组的指针变量按行处理二维数组的问题;( 3)懂得返回指针值函数的概念、定义格式,学会用返回指针值函数处理字符串问题;( 4)懂得函数指针与函数指针变量的概念,学会用函数指针变量处理不同函数数学计算问题;2. 试验要求( 1)编写试验程序( 2)在 VC+ 运行环境中,输入源程序;( 3)编译运行源程序;( 4)输入测试数据进行程序测试;( 5)写出试验输入数据与运行结果;3. 试验内容( 1)定义一个二维字符数组s380 及指针数组 p3 ,用
2、cin.getlinesi,80输入 3 个字符串到二维数组3 行中,然后用指针数组p 对字符串进行降序排列(要求用擂台法),最终用指针数组 p 输出排序后的结果,用字符数组s 输出排序前的三个字符串;试验数据: Visual C+ , Visual Basic, Delphi( 2)输入一个二维数组a33 ,设计一个函数,用指向一维数组的指针变量和二维数组的行数作为函数的参数,求出平均值、最大值和最小值,并输出;试验数据: 10, 25,90, 80, 70, 35, 65, 40, 55( 3)设计程序,用函数指针变量完成两个操作数的加、减、乘、除、取余运算;试验数据: 10 + 2010
3、 - 510 * 1510 / 210 % 3( 4)设计一个用梯形法求定积分的通用函数,被积函数的指针、积分的上限、积分的下限和积分的区间等分数作为函数的参数;分别求出以下定积分的值;欢迎下载精品学习资源2s111ln xx 3dx欢迎下载精品学习资源欢迎下载精品学习资源4s21 131dx x2xex欢迎下载精品学习资源s31 1sinxx 2 dx欢迎下载精品学习资源4. 解答参考1#include 欢迎下载精品学习资源# include void mainvoid char s380 ;char *p3=s0,s1,s2;char *pc ;int i,j,k ;coutInput 3
4、 String:endl;for i=0 ;ipi ;for i=0 ;i2 ;i+ k=i ;for j=i+1 ;j3 ;j+ if strcmp pi,pj0k=j ;if k.=i pc=pi ;pi=pk ;pk=pc ;for i=0 ;i3 ;i+ coutpiendl;for i=0 ; i3 ;i+ coutsiendl;程序运行结果 : Input 3 String: Visual Basic Visual C+ DelphiVisual C+ Visual Basic Delphi Visual Basic Visual C+Delphi 3解:# include int
5、 addint x,int y return x+y ; int subint x,int y return x-y ; int mulint x,int y return x*y ; int divint x,int y return x/y ; int resint x,int y欢迎下载精品学习资源 return x%y ; void mainvoid int x,y ;char operate;int *fint,int;coutinput three 0 endendl ;coutInput x operate y= xoperatey;switch operatecase +: f
6、=add; break;case -: f=sub; break;case *: f=mul ; break;case /: f=div ; break;case %: f=res; break;default: return ;coutxoperatey=*fx,yendl;程序运行结果 :input three 0 end Input x operate y= 10 + 2010+20=3010 - 510-5=510 * 1510*15=15010 / 210/2=510 % 310%3=10 0 03方法一:用指向一维数组的指针变量和二维数组的行数作为函数的参数#include flo
7、at avefloat *p3,float *max,float *min float sum=0 ;int i,j ;fori=0 ;i3 ; i+ forj=0 ; j3 ;j+欢迎下载精品学习资源sum+=*pj ;if *max*pj *min=*pj;p+;return sum/9;void mainvoid float a33,max,min,average;int i,j ;coutInput Data: ;for i=0 ;i3 ;i+for j=0 ;jaij ;max=min=a00 ;average=avea+0,&max,&min ;coutave=averagen ;
8、coutmax=maxn;coutmin=minn;方法二:用数组名为函数参数,在函数内用指向一维数组的指针变量,求出平均值、最大值和最小值,并输出;解:#include void funfloat a33 float max,min,sum=0,*p3;int i,j ;max=min=a00 ;fori=0 ;i3 ; i+ p=a+i ;forj=0 ;j3 ;j+ sum+=*pj;if max*pj min=*pj;coutave=sum/9nmax=maxnmin=minendl;void mainvoid float b33;int i,j ;coutInput Data: ;f
9、or i=0 ;i3 ;i+欢迎下载精品学习资源for j=0 ;jbij;funb ;程序运行结果 :Input Data:10 25 90 80 70 35 65 40 55 ave=52.2222max=90min=10 4欢迎下载精品学习资源分析:由高等数学可知,bf x dx 的定积分值等于由曲线y=fx 、直线 x=a 、x=b 、a欢迎下载精品学习资源y=0 所围曲边梯形的面积s,如下图所示;现将曲边梯形划分成n 个小曲边梯形 s0、 s1、 s2、 sn-1;每个曲边梯形的高均为h=b a/n,用矩形近似曲边梯形后各曲边梯形的面积近似为:欢迎下载精品学习资源s0=y0*hs1=
10、y1*hs2=y2*hyy=f xy n-1y 2yny1y0 s0 s1 s2 sn-1x=ax=b欢迎下载精品学习资源欢迎下载精品学习资源sn-1= yn-1*hs = s0+ s1+ s2+ + sn-1=y0+y1+y2+yn-1*h=f x 0+f x 1+f x 2+f x n-1*hx0=a ,xn=b, xi =a+i*hx0x1x2x3xn-1xnx0ahb图 用梯形法求定积分面积欢迎下载精品学习资源欢迎下载精品学习资源用梯形法求定积分面积的公式为:i n 1sf ai 0ih h欢迎下载精品学习资源其中: a、b 分别为积分的下、上限,n 为积分区间的分隔数,h=b a/n
11、, h 为积分步长; fx 为被积函数;程序编写如下:# include # include float f1float x return 1+logx+x*x*x;欢迎下载精品学习资源float f2float x return 1/1+x*x; float f3float x return x+expx/1+sinx+x*x;float integralfloat *ffloat,float a,float b,int nfloat y,h ;int i ;y=0 ;h=b-a/n ;for i=0 ;in ; i+ y+=fa+i*h;return y*h ;void main void couts1=integralf1,1,2,1000endl;couts2=integralf2,-1,4,1000endl;couts3=integralf3,1,3,1000endl;程序运行结果 : s1=5.13245 s2=2.11232 s3=3.31222欢迎下载
限制150内