程序设计实践实验报告_第1页
程序设计实践实验报告_第2页
程序设计实践实验报告_第3页
程序设计实践实验报告_第4页
程序设计实践实验报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、精品文档实验报告课程名称程序设计实践_实验项目子程序设计实验仪器PC _ _系 别 计算机科学与工程专 业软件工程班级/学号B软工0701/2007011801学生姓名XX实验日期2009-3-26成 绩指导教师XX实验二子程序设计一、实验目的1. 学习和掌握参数传递的方法;2. 学习和掌握递归调用;3. 了解goto语句的使用;4. 了解降低嵌套深度的方法;5. 了解复杂度的度量。二、实验要求1 .通过编程实现,学习和理解参数传递和递归调用的使用。2 .使用goto语句编写程序,用非goto语句改写程序;3 . 了解减少嵌套层次和度量复杂度的方法。三、实验内容和结果1 .参数传递(1)创建控

2、制台应用程序项目(CLR)。定义函数swap, swap函 数有两个整型形参x,y, swap的功能为交换x和y的值,并依次 显示出交换后的x,y的值。主函数定义两个整型变量 a,b,并赋不 同的初值,依次显示a和b的值,调用swap函数,a,b作为实参, 再在主函数中依次显示 a和b的值。(值传递)编写并运行以上程序,分析运行结果,思考值传递中是否会改变 实参的值。(2)创建控制台应用程序项目,修改(1)中程序,使swap函 数的参数为两个指向整型的指针,swap函数中交换指针所指向的 内容;主函数中调用swap函数,交换整型变量 a和b的值。编写并运行修改后的程序,比较与(1)中程序运行结

3、果的不同之 处及原因。(3)创建控制台应用程序项目,修改(1)中程序,采用引用方 式传递函数的参数。编写并运行修改后的程序,比较与(1)、(2)中程序运行结果的 异同以及(2)、(3)程序中改写的难易程度。int swap1(int x,int y)int temp;temp=x;x=y;y=temp;return 0; 实参传递函数int swap2(int &x,int &y)int temp;temp=x;x=y;return 0;形参传递函数int swap3(int *x,int *y)int temp;temp=*x;*x=*y;*y=temp;return 0;指

4、针传递函数int main()int a,b;Console:WriteLine ("plesae input a and b interger:");a=Int32:Parse(Console:ReadLine();b=Int32:Parse(Console:ReadLine();Console:WriteLine ("实参传递函数交换 a和b:");Console:WriteLine ("起始 a 和 b:"+a+" "+b);swap1(a,b);Console:WriteLine ("交换后 a

5、和 b:"+a+" "+b);Console:WriteLine ("");Console:WriteLine ("形参传递函数交换 a和b:");Console:WriteLine ("起始 a和 b:"+a+" "+b);swap2(a,b);Console:WriteLine ("交换后 a 和 b:"+a+" "+b);Console:WriteLine ("+");Console:WriteLine ("指

6、针传递函数交换 a和b:");Console:WriteLine ("起始 a 和 b:"+a+" "+b);swap3(&a,&b);Console:WriteLine ("交换后 a 和 b:"+a+" "+b);Console:WriteLine ( "%");Console:ReadLine();return 0;2 .递归调用y=temp;使用递归时,请注意如下原则:a.确认递归能够停止(子程序中至少含有一条非递归的路径);b.把递归限制在一个子程序内;c.留

7、心栈空间;使用递归前,先考虑可否用其他方式编写程序,可 能效果更好。创建控制台应用程序项目,用递归方式计算阶乘,编写计算阶乘的函数,输入参数n,函数返回值为n的阶乘。编写程序并运行结果。(注意溢出)创建控制台应用程序项目,用循环方式去计算阶乘。编写程序并运行结果。(注意溢出)long double digui(long double n)if(n=0|n=1)return。); elsereturn (digui(n-1)*n);/递归函数long double xhuan(long double n)long double x=1;if(n=0|n=1)return。); else for(

8、int i=1;i<=n;i+)x=x*i;return x;/循环函数int main(array<System:String A> Aargs)Console:WriteLine("please input an integer n:");long double n=Int32:Parse(Console:ReadLine();while(n<0)Console:WriteLine("n<0,please reinput an integer n:");n=Int32:Parse(Console:ReadLine();C

9、onsole:WriteLine("循环输出阶乘 n!="+xhuan(n);Console:WriteLine("递归输出阶乘 n!="+digui(n);Console:ReadLine();return 0;3 . goto语句(1)创建控制台应用程序项目,编写和运行如下程序。主函数如下:int data;int isend;doConsole:WriteLine("please input two number ");isend= Int32:Parse(Console:ReadLine();data= Int32:Parse

10、(Console:ReadLine();if (isend=0)goto LOOP_EXIT;Console:WriteLine("no exit");while(data!=-1);LOOP_EXIT:Console:ReadLine();isend不为 0 时,data 为-1:isend不为0时,data不为-1:ple-Aae InifHic cu«i nunhcr i 13 n巾 exitpleftn>e Input cuvi nunherisend 为 0:ralcaoD Input C w nunbci(2)将上述程序改写为没有 goto语句的

11、如下程序int data;int isend;Console:WriteLine("please input two number");isend= Int32:Parse(Console:ReadLine();data= Int32:Parse(Console:ReadLine();while(isend!=0)&&(data!=-1)Console:WriteLine("no exit");Console:WriteLine("please input two number");isend= Int32:Parse

12、(Console:ReadLine();data= Int32:Parse(Console:ReadLine();Console:ReadLine();isend不为 0, data 为-1:精品文档isend 不为 0,data 不为-1:Inann "InjMriCmmh庄r>h cwlr 111fse 工nyiut two m umbtffisend 为 0:klin,|H hC V-WQ URilVbhlir,pleaae input nuunher RInput nutdber U pl上描工总 Input 力”的卜七 R ple-a.G<» 141

13、put nynfaernfl-0P 1口 tir 2T'祖 niff Al; V llIJMlKr 川UMgj:1'I&asb inuMt iiiunhi&r1套H才心看le-nse N 外惮aiE inii-he产nr|£brocul- lii (Hit iiunRmr iplen土 e input1 nunbe r 盘;口1$霸节学 input1H:zilcdsE1 LHptit iiittGr1 'uin pint Zinput miimlMi i注疆看nunbdii9r r fpi2=6IldjflFOCEiIhndMC比较结果与(1)

14、的不同。当isend不为0, data为-1时两次显示结果不同,第二次没有“noexit"字样(3)将(1)中程序改写为没有goto的程序,且运行结果要求与(1)中一致。(4)编写并运彳f下列带 goto语句的程序int a4;for(int i=0;i<4;i+)Console:WriteLine("please input number");ai= Int32:Parse(Console:ReadLine();if (a0=0)Console:WriteLine("a0=0");goto END_PROC;if (a1=0)Conso

15、le:WriteLine("a1=0");goto END_PROC;if (a2=0)Console:WriteLine("a2=0");goto END_PROC;if (a3=0)Console:WriteLine("a3=0");goto END_PROC;END_PROC:Console:WriteLine("end_proc");Console:ReadLine();执行goto语句:111 pul1pirns r11inputisijuihif1- rL pleas-cinputnwihcriiint

16、pui:(iwmber不执行goto语句:改写(4)中程序,要求利用嵌套的if-else语句消除goto的代码,得到与(4)相同的运行结果int main(array<System:String A> Aargs)int a4;for(int i=0;i<4;i+)Console:WriteLine("please input number");ai= Int32:Parse(Console:ReadLine();if (a0=0)Console:WriteLine("a0=0");elseif (a1=0)Console:WriteL

17、ine("a1=0");elseif (a2=0)Console:WriteLine("a2=0");elseif (a3=0)Console:WriteLine("a3=0");END_PROC:Console:WriteLine("end_proc");Console:ReadLine();Console:ReadLine();return 0;(2)用重复测试的非嵌套代码重写上程序,减少嵌套深度。llbpill. AHIkllll P 1fl I>t”坦,riXu交j11. lft Ar.rU- hl!

18、|Mi L iiklihiLij9 1jiJje-aae- Input r1.»nbev-plea-s e input muFifeer|lt1. It.i已 Eaii|M>j r iiiidiiiL j- 1羽1 哼色式kt rmnlbfiv船口守身,亡ifi田匕 收wMrif 1ji | r-fl-:4 ir EdhjMrfCiilbT i"1 nipil. miivkff"emke-e*JL-0did* lul |IE4:结果观察用if嵌套的程序与使用goto语句的程序的代码特点4.嵌套层次控制(1)运行以下程序int a4;for(int i=0;i

19、<4;i+)Console:WriteLine("please input number");ai= Int32:Parse(Console:ReadLine();if (a0=0)Console:WriteLine("a0=0");if (a1=0)Console:WriteLine("a1=0");if (a2=0)Console:WriteLine("a2=0");if (a3=0)Console:WriteLine("a3=0");Console:ReadLine();Inputn

20、uRbcrLinputinMP(Nf rainjiutnuibeir&I产巽"电inputIM,爵提示:if语句部分可以用如下思路来重写using namespace Systemint main(array<System:String A> Aargs)int a4;for(int i=0;i<4;i+)Console:WriteLine("please input number");ai= Int32:Parse(Console:ReadLine();if (a0=0)&& (a1=0)&& (a2=0

21、)Console:WriteLine("a0=0");Console:WriteLine("a1=0");Console:WriteLine("a2=0");if (a3=0)Console:WriteLine("a3=0");elseif(a0=0)&& (a1=0)Console:WriteLine("a0=0");Console:WriteLine("a1=0");if(a2=0)Console:WriteLine("a2=0");e

22、lseif(a0=0)Console:WriteLine("a0=0");if(a1=0)Console:WriteLine("a1=0");return 0;pl和昌誓E 111111P111. ¥QUCTltlt VploasB jjnpiLit nuniwr 12Fl1jple-asfi liiput nu.lHrrT卜 Lu- iLkfHlE. riuaImi-i* Ipls Un iniput huaIm-%*-leaae iiiipiitP咱1rltied与忠 iftputt3Qi> ttfiuarit;±lty&g

23、t;=20(4)使用if-else if-else改写程序(3),减少(3)中的嵌套深»】村丰电 Inpiit *ufc|he:FJplea.siB input nujtlMrF思考(2)中的代码与(1)中的代码相比的优缺点。度。int main(array<System:String 八> Aargs)int quantity;Console:WriteLine("please input number");quantity= Int32:Parse(Console:ReadLine();L中胃套 Iripuit nunJbe*cumber一中代码量较少,但是难度增加,二中代码量多,难度减少(3)调试和运行如下程序。int quantity;quantity= Int32:P

温馨提示

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

评论

0/150

提交评论