实验一C“加”“加”开发环境与程序设计步骤_第1页
实验一C“加”“加”开发环境与程序设计步骤_第2页
实验一C“加”“加”开发环境与程序设计步骤_第3页
实验一C“加”“加”开发环境与程序设计步骤_第4页
实验一C“加”“加”开发环境与程序设计步骤_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、.:.;实验一 C+开发环境与程序设计步骤一、目的和要求 学习Visual C+.集成环境,掌握源程序编辑方法; 掌握在Visual C+.集成开发环境中编译、调试与运转程序的方法; 经过运转简单的C+程序,初步了解C+源程序的特点。二、实验设备及分组 Windows以上操作系统; Visual C+.言语环境; 每人一台PC机。三、内容和步骤一C+程序设计步骤一个C+程序的设计可分成个步骤: 分析问题。根据实践问题,分析需求,确定处理方法。 编辑源程序。编写C+源程序,并利用一个编辑器将源程序输入到计算机中的某一个文件中。C+源文件的扩展名为“.cpp。 编译程序。编译源程序,检查语法错误,

2、生成目的代码文件。目的代码文件的扩展名为“.obj。 衔接程序。将一个或多个目的程序与库函数进展衔接后,生成一个可执行文件。可执行文件的扩展名为“.exe。 运转程序。执行可执行文件,分析运转结果。假设有算法错误,可进一步进展修正、编译、调试。在编译、衔接和运转程序的过程中,都有能够出现各式各样的错误,要不断地修正源程序,反复以上过程,直到获得正确的结果为止。二Visual C+.上机操作方法Visual C+.系统包含了许多独立的组件,如编辑器、编译器、调试器以及各种各样为开发Windows环境下的C+程序而设计的工具。其中最重要的是一个名为Developer Studio的集成开发环境ID

3、E。Developer Studio把一切的Visual C+工具结合在一同,集成为一个由窗口、对话框、菜单、工具栏、快捷键及宏组成的调和系统,经过该集成环境,程序员可以察看和控制整个开发进程。运用Visual C+.调试C+程序要经过以下几个步骤:. 启动Visual C+.系统启动Visual C+.系统有很多种方法,最常见的是经过鼠标单击“开场菜单,选择“程序,选择“Microsoft Visual Studio .,选择“Microsoft Visual C+ .启动Visual C+.。假设曾经在桌面上建立了“Microsoft Visual C+ .图标,那么也可用鼠标双击该图标启

4、动Visual C+.。Visual C+.启动胜利后,就产生如图.所示的Visual C+集成环境。图. 典型的Developer Studio窗口图.显示了一个典型的Developer Studio主窗口。它分为几个部分:窗口顶部是菜单和工具栏,其中包括“File文件、“Edit编辑、“View视图、“Insert插入、“Project工程、“Build编译、衔接和运转、“Tools工具、“Windows窗口、“Help协助 等菜单,分别对应一个下拉子菜单。左面的一个子窗口是任务区窗口,任务区的右面是编辑子窗口。最下面是输出子窗口。除了各种对话框外,Developer Studio显示两种

5、类型的窗口,即文档窗口和停靠窗口。文档窗口是普通的带边框子窗口,其中含有源代码文本或图形文档。Window子菜单中列出了在屏幕上以平铺方式还是以层叠方式显示文档窗口的命令。一切其他的Developer Studio窗口,包括工具栏和菜单栏,都是停靠式窗口。开发环境有两个主要的停靠窗口Workspace任务区窗口和Output输出窗口。另外还有一个Debugger调试器停靠窗口,只在调试过程中显示。停靠窗口可以固定在Developer Studio用户区的顶端、底端或侧面,或者浮动在屏幕上任何地方。停靠窗口,不论是浮动着的或是固定着的,总是出如今文档窗口的上面。这样,就保证了当焦点从一个窗口移到

6、另一个时,浮动的工具栏不断都是可见的。但这也意味着,文档窗口偶尔会看起来像消逝了似的。例如,假设他正在文本编辑器中编辑源代码,此时翻开一个占据整个Developer Studio用户区的停靠窗口,源代码文档就会消逝,它隐藏在新窗口之下。处理方法是要么关了覆盖的窗口,要么把它拖到不挡眼的地方去。值得留意的是,上述各种部件,包括子窗口、菜单栏和工具栏的位置不是一成不变的,可以根据个人的喜好重新安排。. 创建工程文件通常都是运用工程的方式来控制和管理C+程序文件的,C+的工程中存放特定程序的全部信息,包含源程序文件、库文件、建立程序所用的编译器和其他工具的清单。+的工程以工程文件的方式存储在磁盘上。

7、图. 新建工程对话框图. 新建工程导游对话框生成工程的操作步骤为:选择集成环境中的“File菜单中的“New命令,产生“New对话框,如图.所示。选择对话框中的“Projects标签,以便生成新的工程。在产生新工程时,系统自动生成一个工程任务区,并将新的工程参与到该工程任务区中。在工程类型清单中,选择“Win Console Application工程,表示要生成一个Windows 位控制台运用程序的工程。在“Location文本框中输入存放工程文件的文件夹途径,如“C:DOCUMENTS AND SETTINGSYU YONG YAN桌面新建文件夹。在“Project Name文本框中输入工

8、程名。例如:Exe_。检查“Platforms文件框中能否已显示“in ,表示要开发位的运用程序。单击“New对话框中的“OK按钮。产生一个对话框导游,如图.所示。选“An empty project,按下“Finish按钮,显示验证对话框,直接按“OK按钮,这时就产生了一个工程文件。系统自动加上文件扩展名“.dsw。. 创建+源程序文件并将其参与到工程文件选择“File菜单中的“New命令,那么产生“New对话框,如图.所示。图. 新建文件对话框选择对话框中的“Files标签。在文件类型清单中,选择“C+ Source File工程,表示要生成一个+源程序。在“File文本框中输入+源程序文

9、件名。系统自动加上文件扩展名“.cpp。例如:Exe_.cpp。假设“Add to project复选框没有选中,那么单击该复选框使其选中,表示系统要将指定的源程序文件参与到当前的工程文件中。单击“OK按钮。这时就建立了一个新的+源程序文件,并已参与到了当前的工程文件中。产生如图.所示的窗口。该窗口有三个子窗口,左边的子窗口为工程任务区窗口;右边的子窗口为源程序编辑窗口,用于输入或编辑源程序;下边的窗口为信息输出窗口,用来显示出错信息或调试程序的信息。. 输入和编辑源程序在源程序编辑窗口输入例.中的源程序代码,如图.所示。. 保管源程序文件选择“File菜单中的“Save命令,将源程序保管到相

10、应的文件中。. 编译和衔接图. Visual C+.任务窗口选择“Build菜单中的“Compile或“Build命令,将源程序编译或编译衔接,产生可执行文件。系统自动加上文件扩展名“.exe。例如:Exe_.exe。在编译和衔接期间,假设出现错误,那么在信息输出窗口给出错误或警告信息。矫正错误后,重新编译或编译衔接源程序,直到没有错误为止。. 运转选择“Build菜单中的“Execute命令,那么在+集成环境的控制下运转程序。被启动的程序在控制台窗口下运转,与Windows中运转DOS程序的窗口类似。见以下图。图. 运转结果留意:也可以单击工具栏中的“!按钮(BuildExecute)或者按

11、快捷键“Ctrl+F,直接编译与运转源程序。. 翻开已存在的工程文件可用两种方法翻开已存在的工程文件:选择“File菜单中的“Open workspace命令,然后在弹出的对话框中选择要翻开的工程文件。选择“File菜单中的“Recent workspaces命令,然后再选择相应的工程文件。特别提示:在调试一个运用程序时,Visual C+集成环境一次只能翻开一个工程文件。当一个程序调试完成后,要开场输入另一个程序时,必需先封锁当前的工程文件,然后为新源程序建立一个新的工程文件。否那么将出现不可预测的错误。封锁当前的工程文件的方法是:选择“File菜单中的“Close workspace命令。

12、. 退出Visual C+集成环境选择“File菜单中的“Exit命令,可以退出集成环境。三验证分析程序设计一个C+程序,输出以下信息: *Hello! *解:# include void main() cout *n; cout Hello!n; cout *n;运转结果: *Hello! *设计一个程序,从键盘输入一个圆的半径,求其周长和面积。解:# include void main() float s,r; cout请输入圆的半径:r; s=.*r*r; cout 圆的面积为:sendl;运转结果:请输入圆的半径:圆的面积为:.四完成实验工程. 设计一个程序,从键盘输入一个小写字母,将

13、它转换成大写字母输出。. 输入一个球的半径,求其外表积和体积。四、课后作业撰写实验报告。五、实验机时个规范学时。实验二 数据类型、表达式和输入输出一、目的和要求掌握C+言语数据类型,熟习如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符;学会运用C+的有关算术运算符,以及包含这些运算符的表达式,特别是自加和自减运算符的运用; 进一步熟习C+程序的编辑、编译、衔接和运转的过程; 掌握数据的输入输出方法。二、实验设备及分组 Windows以上操作系统; Visual C+.言语环境; 每人一台PC机。三、内容和步骤一验证分析程序编写程序完成变量x和变量

14、y值的交换,调试程序并察看运转结果。要交换变量x和变量y的值,可以借用暂时变量z进展交换。一个完好的参考程序如下:#includevoid main()int x,y,z;/Acoutxy;cout输入的x=x y=y endl;z=x;x=y;y=z;cout输出的x=x y=y endl;思索: 在键盘上分别按如下格式输入两组数据,并察看程序运转结果:,回车 回车 将程序中的x,y,z命名为auto,break,case,察看能否出错?分析缘由。 只将程序A行x改为大写X,察看能否出错?分析缘由。 修正程序,用条件运算符输出两个数中的较大数。编程序输入x、y和z的值,计算的值。表达式的值不

15、一定为整数,故程序中变量的类型应采用实型。参考程序如下:#includevoid main()float x,y,z,e,f ,w;/Acoutx,y,z= xyz;e= (x+)*(y-);/Bf=x+y;/Cw=e/f;/Dcoutw=wendl;思索: 输入x.,y.,z.,察看程序运转结果。 将程序中A行改为“int x,y,z,e,f,w ;,输入x.,y.,z.,察看程序运转结果。 将程序中A行改为“float x,y,z,w;, B、C、D行改为“w=(x+)*(y-)/x+y;,察看程序运转结果。编写程序,从键盘输入一个三位正整数,将其倒序输出。例如:输入,输出为。输入的三位数

16、为整数,变量类型按整型进展处置。可采用求余数的方法计算各位上的数,然后逆序输出。参考程序如下:#includevoid main()int n,i,j,k; coutn;i=n%;/i存放个位数n=(n-i)/;/去掉个位数 j=n%;/j存放十位数n=(n-j)/;/去掉十位数k=n;/k存放百位数n=i*+j*+k;cout逆转数为:nendl;思索: 修正程序,使其先取百位数,再取十位数,最后取个位数。本例测试了不同数据类型之间的数据转换。分析以下程序的运转结果。#includevoid main()int a=,b;double c=.,d;char e=D,f;b=a+c; /Ad=

17、a+c; f=a+e;coutb=bendl;coutd=dendl;coutf=fendl; /B coutb+d+fa能否成立,假设不成立那么一定不能构成三角形;假设成立那么有能够构成三角形,再判别b-ca能否成立。因b-c有能够小于,用b-ca时不能准确描画两边之差小于第三边,需取绝对值进展分析。参考程序如下:#includevoid main()double a,b,c,t;cout请输入a的值a;cout请输入b的值b;cout请输入c的值c;t=b-c;if(ta)if(ta) cout能构成三角形endl;else cout不能构成三角形endl;else cout不能构成三角形

18、a+b 时,为钝角三角形;当ca+b 时,为锐角三角形。某商店“五一长假期间购物打折。规那么如下:假设每位顾客一次购物, 满元,打九折; 满元,打八折; 满元,打七折; 满元,打六折; 元,打五折;编写程序,输入购物款,输出实收款。解:本例运用了if-else if语句进展多重判别。参考程序如下:#includevoid main() double m,p; coutm; if(m)p=m; else if (m)p=.*m; else if(m) p=.*m; else if(m) p=.*m; else if(m) p=.*m; else p=.*m; cout实收款:pendl;有以下分

19、段函数:编一程序,输入x,输出y的值。解:程序如下:#include void main() float x,y;coutx;if (x=)if (x=)y=x*x*x;elsey=x*x-;elsey=x+;couty=yendl;运转结果:Input x: -y=-二完成实验工程设计一个程序,判别从键盘输入的整数的正负性和奇偶性。编写程序,实现以下函数功能:知奖金税率如下:a代表奖金,r代表税率a(元)r=%ar=%ar=%ar=%ar=%输入一个奖金数,求税率、应交税款及实得奖金数。输入某一年的年份和月份,计算该月的天数。提示()一年中的大月(月、月、月、月、月、月、月),每月的天数为天

20、;()一年中的小月(月、月、月、月),每月的天数为天;()对于月,那么要判别该年是平年还是闰年,平年的月为天,闰年的月为天。某年符合下面两个条件之一就是闰年:年份能被整除;年份能被整除,但不能被整除。输入平面直角坐标系中一点的坐标值x,y,判别该点是在那一个象限中或那一条坐标轴上。四、课后作业. 设计一个计算器,可以实现简单的四那么运算;. 撰写实验报告。五、实验机时个规范学时。实验四 循环构造的程序设计一、目的和要求掌握循环构造while、dowhile、for等语句格式、执行过程、运用方法及典型案例。学习循环构造的嵌套运用。掌握分支与循环综合程序的编写方法;学习并熟习break、conti

21、nue的区别与运用。学会常用数值与图形的编程方法。二、实验设备及分组 Windows以上操作系统; Visual C+.言语环境; 每人一台PC机。三、内容和步骤一验证明验程序计算:S=+n。真假insum=sum+ii+开场输入nsum=i=输出sum终了图. 求累加和流程图解:程序流程图如图.所示,程序如下:#include void main() int i,n,sum; coutn; sum=; i=; while (i=n) sum=sum+i; i+; coutsum=sumendl;运转结果: Input an integer: sum=裴波那契数列的前几个数为,其规律为:F=(

22、n=)F=(n=)Fn=Fn-+Fn- (n)编写程序求此数列的前面个数。分析:可设两个变量f和f,它们的初值为f=,即数列的第项,f=,即数列的第项,用一个循环构造来求数列的前项,每次处置两项,所以共循环次,进入循环后,首先输出f、f,然后令f=f+f,即可求得第项,再令f=f+f,留意此时的f曾经是第项了,所以可求得第项;进入下一次循环时,首先输出第、项,然后按上述方法求得第、项,以此类推即可求得前项。解:#include #include void main() long int f,f; int i; f=;f=; for (i=;i=;i+) coutsetw()fsetw()f;

23、if (i%=)coutendl; f=f+f; f=f+f; 例中“if语句的作用是使在一行中输出个数。运转结果: 求出之间的一切素数,输出时一行打印五个素数。分析:判别一个数a能否为素数,只需将它整除以取整即可,假设都不能整除,那么a就是素数。解:#include #include #include void main(void) int a,k,i,n; n=; for (a=;a=;a+) k=sqrt(a); for (i=;ik)/假设ik,那么i为素数 coutsetw()a; /输出素数 n=n+;/对素数统计个数 if (n%=) coutendl; coutendl;程序运

24、转后,输出,: 编写程序用公式计算e的近似值。直到最后一项小于给定精度。分析:这是一个累加求和的问题,仔细分析各项,可以发现从第二项开场,各项的值为前一项除以序号n:解:#include void main()double e = .,x = .,y,z;int n=;coutz ;y=/x ;while(y=z)x*=n;y=/x;e+=y;+n; couteendl;思索: 将程序中while构造改写为dowhile,察看程序的运转结果。 添加“continue或“break语句,使程序在输入数据大于.时,显示“精度要求太低,请重新输入的提示。有一对兔子,从第个月起每个月生一对兔子,小兔子

25、从第个月起每个月又生一对兔子。假设一切兔子都不死,编程序计算每个月的兔子是多少对?求个月。分析:从第个月开场,下个月兔子的对数为本月兔子的对数与上月兔子对数之和。这样可得出该序列的规律是:从第项开场,该项的值为前两项之和。兔子数目的规律是: 、。解:#include void main( ) int f,f,f; int i; f=f=; for(i=;i=;i+) /A f=f+f; couti月兔子对数为:f=;i-)后,察看程序运转结果; 画出本例的流程图。编写程序打印如图-所示蝶形图形。分析:此图形为上下对称构造,用-的整数标识行号i,那么每行字符“B的个数可表示为*|i|+。每行字符

26、“B前空格的个数随着|i|的增大而减少,空格的个数要大于。解:BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB图- 蝶形# include void main()int i,j,k,d; for(i=-;i=;i+)coutendl;d=i;if (i) d=-i;for (j=;j=-*d;j+)cout ;for (k=;k=*d+;k+)coutB;coutendl; 思索: 将程序中的“for(j=;j=-*d;j+)用“for(j=;j=-*d;j

27、+)改写后,察看程序运转结果。 将程序中的“for(i=-;i=;i+)用“for(i=-;i=;i+)改写后,察看程序运转结果。 将程序中的“for (k=;k=*d+;k+)用“for (k=;k=*d+;k+)改写后,察看程序运转结果。将以下do-while构造修正为while构造,分别察看输出结果。#include void main()int a=; /Adoa+;couta=a);思索: 将条件while(a)改为while(a),分别察看输出结果。 将A语句改为a=-,while(a)改为while(a),计算循环执行的次数。从键盘输入恣意多个整数-为终了标志,计算其中正数之和。

28、分析:采用转向语句break和continue实现。break在循环体中用于退出本层循环;continue用于终了本次循环。解:#include void main()int x,s=;while()cinx;if (x=-) break; /Aif (x) continue; /Bs=s+x;couts=sendl;思索: 交换A行和B行的位置,察看程序运转结果。 修正程序“输入恣意多个整数-为终了标志为“直到包含个正数时,计算正数之和。二完成实验工程编程序打印一个如图-所示的数字金字塔:图- 数字金字塔输入一行字符,分别统计出其中英文字母、空格、数字字符、其它字符及单词的个数。设有一个数列

29、,它的前四项为、,以后每项分别是其前四项之和,编程求此数列的前项。求近似值的公式为:其中,n=、设计一个程序,求出当n=时的的近似值。求出中能被整除,且至少有一位数字为的一切整数。如、均是满足条件的整数。四、课后作业. 设用元钱买支笔,其中钢笔每支元,圆珠笔每支元,铅笔每支.元,问钢笔、圆珠笔和铅笔可以各买多少支每种笔至少买支? . 撰写实验报告。五、实验机时个规范学时。实验五 数组一、目的和要求. 掌握一维数组、二维数组、字符数组的定义、初始化赋值、数组元素的援用方法;. 掌握求最大、小值、平均值、排序的方法以及有序数组的查找、添加、删除的编程方法;. 初步掌握字符串处置函数的运用方法以及字

30、符串复制、衔接、测长等程序的编写方法;. 掌握数组的典型运用。二、实验设备及分组 Windows以上操作系统; Visual C+.言语环境; 每人一台PC机。三内容和步骤一验证明验程序运用一维数组,对个数进展冒泡排序,使其按照从大到小的顺序输出。分析:n个数冒泡排序的方法是将第一个数与其后面的数逐个进展比较,发现大者进展交换,完成后最大的数就放到了第一个的位置;第二个数与其后面的数逐个进展比较,发现大者进展交换,完成后次大的数就放到了第二个的位置;如此循环,直到第n-个数与第n个数进展比较,发现大者进展交换。解:#include void main()int a; /Aint i,j,t;c

31、out输入数据:endl;for(i=;i;i+) /B coutai+ai; for(i=;i=;i+) for(j=i+;j=;j+) if(aiaj)t=ai;ai=aj;aj=t;cout排序结果为:endl;for(i=;i=;i+) coutai+=ai n;int an察看运转结果?分析缘由。 将B行改为“for(i=;i=;i+),察看景象。运用二维数组打印如图-所示杨辉三角形。分析:由杨辉三角形可以看出每行数存在以下规律:每行数据的个数与行序一样;每行的第一个数和最后一个数均为;中间的数为上一行同一列的数和其前一列的数之和。 图- 杨辉三角形解: #include void

32、main()int y; int i,j,n=;for(i=;in;i+)yii=; yi=; 图- 杨辉三角形 for(i=;in;i+)for(j=;ji;j+) yij=yi-j-+yi-j;cout杨辉三角形:endl;for(i=;in;i+)cout ;for(j=;j=i;j+) coutyij ;coutendl; 思索: 添加语句输出如图-所示杨辉三角形。从键盘输入两个字符串,将它们衔接成一个字符串。分析:建立两个变量i、j,先使i指向字符数组str的第一个元素,然后挪动i使其指向str的末尾,即指向str的最后一个元素;再使j指向字符数组str的第一个元素,然后将str中的

33、元素分别赋给str中相应位置的元素,直到str终了为止,即j指向str的最后一个元素;最后在str的末尾添加一个终了标志。程序如下:解:#include void main(void) char str,str;/定义字符数组str、str int i,j; cout输入二个字符串:; cin.getline(str,);/输入字符串到str中 cin.getline(str,);/输入字符串到str中 i=;/使i指向str的第一个元素 while (stri!=)/判别str能否终了 i+;/str没有终了,使i指向下一个元素 j=;/使j指向str的第一个元素 while (strj!=

34、)/判别str能否终了 stri=strj;/str没有终了,将strj赋给;strii+;/使i指向str的下一个元素 j+;/使j指向str 的下一个元素 stri=;/在str末尾添加终了标志 coutstrendl;/输出str编程序将输入的字符串删去空格后输出。分析:逐个读取每个字符,假设为空格将其后面的字符和字符串终了标志前移一位,再从该位置开场,反复上述操作,直到字符串终了。解:#include void main()char str=that is a book!; /Aint i=,j;while(stri!=NULL)if(stri= ) /Bj=i;while(strj!

35、=NULL)strj=strj+;j+; i+; coutstrendl; /C思索: 将程序中A行的“用“改写,察看景象。 将程序中B行的“用“改写,察看景象。 将程序中C行改写为:for(j=;strj!=NULL;j+,coutstrj) ; coutendl; 察看输出结果。 编程序将输入字符串中出现的字符除空格外,按从大到小的顺序输出每个字符只输出一次。二完成实验工程编程实现将一十进制整数M转换为D进制数。知一int a数组,编程将值为偶数的元素移到数组前端,值为奇数的元素移到数组后端。要求元素比较、挪动次数尽量最少求,其中n。某班有个学生,进展了“数学、“语文、“英语、“C+言语等

36、科目的考试,编写程序: 将考试成果输入一个二维数组; 求每门课的平均成果、每门课的不及格学生的人数及每门课的最高分与最低分; 求每个学生的平均成果、总分、不及格门数; 按学生平均成果的高低排序并输出。设计一个程序,打印杨辉三角形。运用其它方法编写程序,实现str=str+str的操作,此处运算符“+表示将二个字符串str、str衔接成一个字符串str。用键盘将二个字符串输入字符数组str与str中,衔接后的字符串存放在字符数组str中,并输出衔接后的字符串str。四、课后作业. 设A、B、C为m行n列矩阵。设计矩阵加法程序,能完成C=A+B的操作。m与n用define定义为常量,其值由用户自定

37、义。. 已有一按从小到大次序排序好的数组,现输入一数,要求用折半查找法找出该数在数组中的位置。. 撰写实验报告。五、实验机时个规范学时。实验六 函数调用一、目的和要求了解函数的定义方法,了解函数的调用;初步掌握函数的递归、嵌套调用;了解函数调用的实参与形参的传送,以及参数默许值的设置。学习并了解重载函数、内联函数的根本概念。二、实验设备及分组 Windows以上操作系统; Visual C+.言语环境; 每人一台PC机。三、内容和步骤一验证明验程序编写一个函数,用递归的方法求+n的值。在主函数中进展输入输出。解:#include int fun(int n) int z; if(n=) z=;

38、 else z=n+fun(n-); return(z);void main(void) int x,sum; cout请输入X的值x; sum=fun(x); cout求和结果为:summ),求的值。分析:知根据公式,只需自定义一个函数计算阶乘,即可经过函数调用求出的值。解:阶乘函数定义如下:double fact(int k)int p=;if(k=)|(k=)return p;elsefor(int i=;i=k;i+) p=p*i;return p;一个完好的参考程序如下:#include double fact(int); void main() int m,n;double c;c

39、outplease inputendl;l:coutn;coutm;if (nm) coutn must bigger than m!,please reinput:endl;goto l;c= fact(n)/( fact(m)* fact(n-m);coutc=cendl; /Bdouble fact(int k) int p=;if(k=)|(k=)return p;elsefor(int i=;in),当余数不为零时,m取n的值,n取r的值,再求两个数相除的余数,反复进展直到余数为零,除数n是最大公约数。最小公倍数=mn最大公约数。解:#include int fun(int c,in

40、t d) int r;r=c%d; while(r!=)c=d;d=r;r=c%d; return d; void main()int m,n,e,d;coutmn;e=fun(m,n); d=m*n/e;cout 最大公约数为:eendl;cout 最小公倍数为:dendl;思索: 输入两个数m=,n=察看程序运转结果。 用递归调用的方法实现程序编写,参考程序如下:# include int fun(int c,int d)int r;r=c%d;if(r!=)c=d;d=r;fun(c,d); return d;void main()int m,n,e,d;coutmn;e=fun(m,n

41、);d=m*n/e;cout 最大公约数为:eendl;cout 最小公倍数为:dendl; 编写计算三个数最大公约数的程序。分别输入整数半径和实数半径,运用函数重载计算圆的面积。分析:由于参数只需一个圆的半径,所以只能对不同类型的参数实现重载。解:程序如下#include #define PI .int area(int);float area(float);void main()int r;coutr;coutarea=area(r)endl;float r;coutr;coutarea=area(r)endl;int area(int x)return PI*x*x;float area

42、(float x)return PI*x*x;思索: 编写重载函数实现对两个整型数、三个整型数、两个实型数、三个实型数等求最小值。运用内联函数计算长方形的面积。分析:C+编译器在调用遇到内联函数的地方,会用函数体中的代码交换函数。解:一个完好的内联函数参考程序如下:#include float s(float x,float y);void main()float a,b;coutab;couts=s(a,b)endl;inline float s(float x,float y)return x*y;思索: 将程序中的内联函数进展代码交换,并上机运转,察看结果。二完成实验工程编写函数求:用函

43、数调用方法打印九九表乘法。以下函数是用递归方法计算x的n阶勒让德多项式的值。已有调用语句“p(n,x);,编写poly函数。递归公式如下:知x的初始值为.,用牛顿法求解方程的近似解,要求准确到。的牛顿法为:知个学生门课的成果,要求主函数分调用各函数实现: 找出每门课成果最高的学生序号; 找出课程有不及格的学生的序号及其各门课的全部成果; 求每门课程的平均分数,并输出; 将学生按总分高低排序。设计函数Friint M,int n,功能是将M个人围成一圈,编号为M,从第号开场报数,报到n的倍数的人分开,不断数下去,直到最后只剩下人。求此人的编号。四、课后作业. 定义子函数如下:sum(int x,

44、int y)return x+y;编写程序运用调用语句sum()、sum()和sum(,)分别对带默许参数值的函数sum进展调用。sum函数声明如下:sum(int x=,int y=);. 撰写实验报告。五、实验机时个规范学时。实验七 指针与援用一、目的和要求. 掌握指针、指针变量、指针常量的根本概念;. 掌握指针与数组、指针与函数的关系及运用。. 初步掌握援用的概念及简单运用。二、实验设备及分组. Windows以上操作系统;. Visual C+.言语环境;. 每人一台PC机。三、内容和步骤一验证明验程序指针变量的自加、自减、加n和减n运算。假设数组a的首地址为。解:# include

45、void main( )int a=,;int *p;p=&a; /p指向a,p=p+ ; /p指向下一个元素a,p=cout *pt; /输出a的内容。p=p+; /p指向下个元素a,p=cout *pt; /输出a的内容。p; /p指向上一个元素a,p=cout *pt; /输出a的内容。p=p; /p指向上个元素a,p=cout *pt; /输出a的内容。运转结果: 指出以下程序的错误。#include void exchange(int,int);void main()int a,b;cinab;coutBefore Exchange:a=a,b=bendl;exchange(a,b)

46、;coutAfter Exchange:a=a,b=bendl;void exchange(int x,int y)int t;t=x;x=y;y=t;分析:本例的目的是在子函数中交换的两个变量的值,在主函数中运用。但函数的数据传值调用方式是将实参的数据值传送给形参,实参和形参在内存中占用不同的地址单元,改动形参值不改动实参值。要想经过改动形参的值而改动实参的值,那么应运用指针调用或援用调用。而且援用调用大有取代指针调用之势。图. 经过指针实现数据交换解:运用指针调用如下:#include void exchange(int*,int*);void main()int a,b,*p=&a,*p

47、=&b;cinab;coutBefore Exchange:a=a,b=bendl;exchange(p,p);coutAfter Exchange:a=a,b=bendl;void exchange(int *x,int *y)int t;t=*x;*x=*y;*y=t;运用援用调用如下:#include void exchange(int&,int&);void main()int a,b;cinab;coutBefore Exchange:a=a,b=bendl;exchange(a,b);coutAfter Exchange:a=a,b=bendl;void exchange(int

48、&x,int &y)int t;t=x;x=y;y=t;用指针变量输出二维数组各元素的值。解:# include void main( ) int a=,;int *p=&a; /将二维数组首地址赋给指针变量pfor (int i=;i;i+)cout*pt; /输出二维数组中第i个元素值p+; /指针变量p加,指向下一个元素运转结果: 用指针与数组作为函数参数,用四种方法求整型数组的最大值。解:#include int max( int a ,int n) /形参为数组名 int i,max=a; for (i=;imax) max=ai; return max; int max( int

49、*p,int n) /形参为指针 int i,max=*(p+); for (i=;imax) max=*(p+i);return max;int max( int a ,int n) /形参为数组名 int i,max=*(a+); for (i=;imax) max=*(a+i);return max;int max(int *p,int n) /形参为指针 int i,max=p;for (i=;imax)max=pi; return max;void main( void) int b =,*pi; coutmax=max(b,)endl; /实参为数组名,形参为数组 coutmax=

50、max(b,)endl; /实参为数组名,形参为指针变量 pi=b; coutmax=max(pi,)endl; /实参为指针变量,形参为数组 pi=b; coutmax=max(pi,)endl; /实参为指针变量,形参指针变量运转结果: max= max= max= max=变量和数组元素的地址都可以赋给一个指针,一个指针可以加上或减去一个整数;在两个指针指向同一数组不同元素时,可以进展减运算,结果为其间的数组元素个数。解:#includevoid main()int i,a;int *p,*p;p=a; /Ap=p+; for (i=;i=;i+) ai=i*i;coutai=aiend

51、l;couta=aendl; /Bcoutp=p,p=pendl;coutp-p=p-pendl;cout*p-*p=*p-*pendl; /C思索: 将程序中A行改为“p=&a察看程序运转结果。 将程序中B行改为“cout*a=*aendl;察看程序运转结果。 将程序中C行改为“couta-a= a-aendl;察看程序运转结果。运用函数的指针分别调用两个函数sum和sum分别求不大于该数的偶数或奇数之和。分析:运用函数的指针,可以经过指针的赋值分别调用不同的函数。解:#include int sum(int);int sum(int);void main() int a; int (*f)

52、(int); /A couta; if(a%=) f=sum; cout(*f)(a)endl; else f=sum; cout(*f)(a)endl; int sum(int m)int s=;for(int i=;i=m;i=i+)s=s+i;return s;int sum(int n)int s=;for(int i=;i=n;i=i+)s=s+i;return s;思索: 将A行改为“int (*f)(int);,察看景象。 分别输出两个函数的函数名,察看其地址值。输入两个字符串,将第二个字符串拼接到第一个字符串的尾部,然后输出拼接后的字符串。解:# include # inclu

53、de char *stringcat(char * p,char *p) char *p=p; /将目的串首地址赋给指针变量p。 while(*p+); /指针p移到s的串尾 p; while (*p+=*p+); / 将源串s中的字符依次复制到目的串s中。 return p; /前往指向目的串首地址的指针p。 void main(void) char s,s; cout输入第一个字符串:; cin.getline( s,); cout输入第二个字符串:; cin.getline( s,); cout拼接后的字符串: ; coutstringcat(s,s)endl; /将字符串s拼接到字符串

54、s后输出s的内容。 运转结果: 输入第一个字符串:ABCD 输入第二个字符串:EFGH 拼接后的字符串:ABCDEFGH自定义函数实现字符串的拷贝。分析:字符串不允许进展赋值运算,只能运用头文件string.h中定义的strcpy()库函数。本例要求本人编制一个自定义函数实现strcpy()库函数的功能。解:#includechar *mycopy(char*,const char*);void main()char s=I am a student;char s;mycopy(s,s);couts=sendl;couts=sendl;char *mycopy(char *to,const c

55、har *from)char *temp=to;for(;*to+=*from+;); return temp; 将自定义函数改为以下程序段:char *mycopy(char *to,const char *from)char *temp=to;for(int i=;*(from+i)!=;i+)*(to+i)=*(from+i);*(to+i)=;return temp;察看景象。 将自定义函数的声明改为:“char *mycopy(const char*,const char*);自定义函数相应改为:char *mycopy(const char *to,const char *from

56、)char *temp=to;for(;*to+=*from+;); return temp;察看景象。 在自定义函数中能否运用如下的语句“*from=a;编程,断定一个字符在一个字符串中出现的次数,假设该字符不出现那么前往。分析:逐个读取字符串中的字符,当所给字符与字符串中的字符一样时,计数器count的值加后继续查找,直到字符串尾。解:一个完好的参考程序如下:#include char_count(char *s,char letter)int count=;while(*s)if(*s+=letter)count+;return (count); void main()char str,

57、c;coutstr;coutc;coutthe count is:char_count(str,c)endl;思索: 修正程序输出每个字符和其出现的次数,不允许字符反复输出。用指针实现字符串拷贝。解:# include # include void main( ) char *p=I am a student ;char s,s;strcpy( s,p); /用命令拷贝字符串char *p=s; /将数组s首地址赋pfor (;*p+=*p+;); /用指针拷贝字符串couts=sendl;couts=sendl;运转结果:s= I am a students= I am a student运

58、用new和delete创建动态堆栈。分析:new和delete运算符可以对数组和构造体进展动态内存分配和释放。解:#includestruct Stackint stacksize;long *buffer;long *sp; p;void ini(int size)p.stacksize=size;p.sp=p.buffer=new longsize;void del()delete p.buffer;void push(long data)if(p.sp=p.buffer+p.stacksize)cerrstack overflow!n;else*p.sp+=data;coutdata i

59、s pushed.endl;long pop()if(p.sp=p.buffer)cerrstack is empty!n;return ;return *-p.sp;void main()ini();/Apush();push();push();push();coutendl;coutpop() is popedendl;coutpop() is popedendl;coutpop() is popedendl;coutpop() is popedendl;coutpop() is popedendl;del();思索: 将程序中A行分别改为“ini();和“ini();察看程序运转结果。运

60、用指向指针的指针输出计算机课程名。分析:指向指针的指针变量即二级指针,其所指向的变量仍是一个指针。指向指针的指针多运用在二维数组,和字符数组处置过程。解:#include char *name=Visual Basic,Visual C+,Delphi,Power Build,Visual Foxpro;void main()char *p =name;for(int i=;i;i+)cout*(p+i)endl;/A思索: 将A行修正为“cout*(p+i)endl;,察看输出结果。 对下面的定义:int a=,;int *b=&a,&a,&a;int *p=b;修正程序输出a数组元素和b数

温馨提示

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

评论

0/150

提交评论