c++程序设计实验八.doc
《c++程序设计实验八.doc》由会员分享,可在线阅读,更多相关《c++程序设计实验八.doc(6页珍藏版)》请在咨信网上搜索。
实验八 1.实验目的 (1)初步学会指针数组的定义与使用方法。 (2)了解指向一维数组的指针变量的概念,能用指向一维数组的指针变量按行处理二维数组的问题。 (3)理解返回指针值函数的概念、定义格式,学会用返回指针值函数处理字符串问题。 (4)理解函数指针与函数指针变量的概念,学会用函数指针变量处理不同函数数学计算问题。 2.实验要求 (1)编写实验程序 (2)在VC++运行环境中,输入源程序; (3)编译运行源程序; (4)输入测试数据进行程序测试; (5)写出实验输入数据与运行结果。 3.实验内容 (1)定义一个二维字符数组s[3][80]及指针数组p[3],用cin.getline(s[i],80) 输入3个字符串到二维数组3行中,然后用指针数组p对字符串进行降序排列(要求用擂台法),最后用指针数组p输出排序后的结果,用字符数组s输出排序前的三个字符串。 实验数据:"Visual C++" ,"Visual Basic" ,"Delphi" (2)输入一个二维数组a[3][3],设计一个函数,用指向一维数组的指针变量和二维数组的行数作为函数的参数,求出平均值、最大值和最小值,并输出。 实验数据:10,25,90,80,70,35,65,40,55 (3)设计程序,用函数指针变量完成两个操作数的加、减、乘、除、取余运算。 实验数据:10 + 20 10 - 5 10 * 15 10 / 2 10 % 3 (4)设计一个用梯形法求定积分的通用函数,被积函数的指针、积分的上限、积分的下限和积分的区间等分数作为函数的参数。分别求出下列定积分的值。 4.解答参考 (1) #include <iostream.h> # include <string.h> void main(void) { char s[3][80]; char *p[3]={s[0],s[1],s[2]}; char *pc; int i,j,k; cout<<"Input 3 String:"<<endl; for (i=0;i<3;i++) cin>>p[i]; for (i=0;i<2;i++) { k=i; for (j=i+1;j<3;j++) if (strcmp (p[i],p[j])<0) k=j; if (k!=i) { pc=p[i];p[i]=p[k];p[k]=pc; } } for ( i=0;i<3;i++) cout<<p[i]<<endl; for ( i=0;i<3;i++) cout<<s[i]<<endl; } 程序运行结果: Input 3 String: Visual Basic Visual C++ Delphi Visual C++ Visual Basic Delphi Visual Basic Visual C++ Delphi (3) 解: # include <iostream.h> int add(int x,int y) { return x+y;} int sub(int x,int y) { return x-y;} int mul(int x,int y) { return x*y;} int div(int x,int y) { return x/y;} int res(int x,int y) { return x%y;} void main(void) { int x,y; char operate; int (*f)(int,int); cout<<"input three 0 end"<<endl; cout<<"Input x operate y= "<<endl; while(1) { cin>>x>>operate>>y ; switch (operate) { case '+': f=add; break; case '-': f=sub; break; case '*': f=mul; break; case '/': f=div; break; case '%': f=res; break; default: return; } cout<<x<<operate<<y<<"="<<(*f)(x,y)<<endl; } } 程序运行结果: input three 0 end Input x operate y= 10 + 20 10+20=30 10 - 5 10-5=5 10 * 15 10*15=150 10 / 2 10/2=5 10 % 3 10%3=1 0 0 0 (3) 方法一:用指向一维数组的指针变量和二维数组的行数作为函数的参数 #include <iostream.h> float ave(float (*p)[3],float *max,float *min) { float sum=0; int i,j; for(i=0;i<3;i++) { for(j=0;j<3;j++) { sum+=(*p)[j]; if (*max<(*p)[j]) *max=(*p)[j]; if (*min>(*p)[j]) *min=(*p)[j]; } p++; } return sum/9; } void main(void) { float a[3][3],max,min,average; int i,j; cout<<"Input Data:"; for (i=0;i<3;i++) for (j=0;j<3;j++) cin>>a[i][j]; max=min=a[0][0]; average=ave(a+0,&max,&min); cout<<"ave="<<average<<'\n'; cout<<"max="<<max<<'\n'; cout<<"min="<<min<<'\n'; } 方法二:用数组名为函数参数,在函数内用指向一维数组的指针变量,求出平均值、最大值和最小值,并输出。 解: #include <iostream.h> void fun(float a[3][3]) { float max,min,sum=0,(*p)[3]; int i,j; max=min=a[0][0]; for(i=0;i<3;i++) { p=a+i; for(j=0;j<3;j++) { sum+=(*p)[j]; if (max<(*p)[j]) max=(*p)[j]; if (min>(*p)[j]) min=(*p)[j]; } } cout<<"ave="<<sum/9<<'\n'<<"max="<<max<<'\n'<<"min="<<min<<endl; } void main(void) { float b[3][3]; int i,j; cout<<"Input Data:"; for (i=0;i<3;i++) for (j=0;j<3;j++) cin>>b[i][j]; fun(b); } 程序运行结果: Input Data:10 25 90 80 70 35 65 40 55 ave=52.2222 max=90 min=10 (4) 图 用梯形法求定积分面积 y y=f (x) yn-1 y2 yn y1 y0 △ s0 △s1 △s2 … △sn-1 x=a x=b x0 x1 x2 x3 xn-1 xn x 0 a h b 分析:由高等数学可知,的定积分值等于由曲线y=f(x)、直线x=a 、x=b、 y=0所围曲边梯形的面积s,如下图所示。现将曲边梯形划分成n个小曲边梯形△s0、△s1、△s2、…、△sn-1。每个曲边梯形的高均为h=(b-a)/n,用矩形近似曲边梯形后各曲边梯形的面积近似为: △s0=y0*h △s1=y1*h △s2 =y2*h … △sn-1=yn-1*h s =△s0+△s1+△s2+…+△sn-1=(y0+y1+y2+…+yn-1)*h =((f (x0)+(f (x1)+f (x2)+…+f (xn-1))*h ∵x0=a ,xn=b,xi=a+i*h ∴用梯形法求定积分面积的公式为: 其中:a、b分别为积分的下、上限,n为积分区间的分隔数,h=(b-a)/n,h为积分步长;f(x)为被积函数。 程序编写如下: # include <math.h> # include <iostream.h> float f1(float x) { return (1+log(x)+x*x*x);} float f2(float x) { return (1/(1+x*x));} float f3(float x) { return (x+exp(x))/(1+sin(x)+x*x);} float integral(float (*f)(float),float a,float b,int n) { float y,h; int i; y=0; h=(b-a)/n; for (i=0;i<n;i++) y+=f(a+i*h); return (y*h); } void main (void ) { cout<<"s1="<<integral(f1,1,2,1000)<<endl; cout<<"s2="<<integral(f2,-1,4,1000)<<endl; cout<<"s3="<<integral(f3,1,3,1000)<<endl; } 程序运行结果: s1=5.13245 s2=2.11232 s3=3.31222- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 程序设计 实验
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【xrp****65】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【xrp****65】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【xrp****65】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【xrp****65】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文