您好,欢迎访问三七文档
-1--2-姓名:XX学院:XXX班级:XXX学号:XXX实验二:简单程序设计1、实验目的1.学会编写简单的C++程序。2.练习使用简单的输入输出。3.观察头文件的作用。4.学会使用VC++6.0的DEBUG调试程2、实验内容1.输入并运行教材《C++语言程序设计》中的例题2-7,即:用do-while语句编程,求自然数1~10之和。程序正确运行之后,去掉源程序中的#include语句,重新编译,观察会有什么问题。2.do-while语句用for语句代替,完成相同的功能。3.程计算图形的面积。程序可计算圆形、长方形、正方形的面积,运行时先提示用户选择图形的类型,然后,对圆形要求用户输入半径值,对长方形要求用户输入长和宽的值,对正方形要求用户输入边长的值,计算出面积后将其显示出来。a)使用debug调试功能观察程序运行中变量值的变化情况。b)定义一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。3、实验步骤(1)例题2-7-3-#includeiostreamusingnamespacestd;voidmain(){inti(1),sum(0);do{sum+=i;i++;}while(i=10);coutsum=sumendl;}(2)用FOR语句代替#includeiostreamusingnamespacestd;voidmain(){inti(1),sum(0);for(i;i=10,i++){sum+=i;}coutsum=sum;-4-}(3)计算图形面积:#includeiostreamusingnamespacestd;constfloatpi=3.1416;voidmain(){intitype;floatradius,a,b,area;cout图形的类型是:1:圆形2:长方形3:正方形;cinitype;switch(itype){case1:cout圆的半径是:;cinradius;area=pi*radius*radius;cout面积是:areaendl;break;case2:cout矩形的长,宽分别为;cinab;-5-cout面积为:a*bendl;break;case3:cout正方形的边长是;cina;cout面积是a*aendl;break;defaut:cout不是合法的输入endl;}}时间的结构体:#includeiostreamusingnamespacestd;structriqi{intyear;intmon;intday;inthour;intminut;intsecond;-6-};voidmain(){riqia;cout输入时间日期endl;cout输入年份endl;cina.year;cout输入月份endl;cina.mon;cout输入日期endl;cina.day;cout输入小时endl;cina.hour;cout输入分钟endl;cina.minut;cout输入秒endl;cina.second;cout时间是:a.year--a.mon--a.day--a.hour:a.minut:a.second;}[实验结果]-7-运行结果:sum=55去掉#include后出现四个错误errorC2143:syntaxerror:missing';'before''errorC2065:'cout':undeclaredidentifiererrorC2297:'':illegal,rightoperandhastype'char[5]'errorC2065:'endl':undeclaredidentifier-8-实验三、函数的应用(2学时)1、实验目的:掌握函数的定义和调用方法。练习重载函数使用。练习函数模板的使用练习使用系统函数。2、实验任务:编写一个函数把华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。编写重载函数Max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。使用重函数模板重新实现上小题中的函数Max1。使用系统函数pow(x,y)计算xy的值,注意包含头文件math.h。用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。3、实验步骤与结果编写函数floatConvert(floatTempFer),参数的返回值都为float类型,实现算法C=(F-32)*5/9,在main()函数中实现输入、输出。-9-程序名为lab3_1.cpp.分别编写四个同名函数max1,实现函数重载,在main()函数中测试函数功能。程序名:lab3_2.cpp。使用函数模板实现求任意类型数的最大值,针对不同的参数个数,编写两个同名函数模板max1,其参数个数不同,实现函数重载,在main()函数中测试函数的功能。和序名:lab3_3.cpp。-10-在main()函数中提示输入两个整数x,y,使用cin语句得到x,y的值,调用pow(x,y)函数计算x的y次幂的结果,再显示出来。程序名:lab3_4.cpp。编写递归函数intfib(intn),在主程序中输入n的值,调用fib函数计算Fibonacci级数。公式为fib(n)=fib(n-1)+fib(n-2),n2;fib(1)=fib(2)=1。使用if语句判断函数的出口,在程序中用cout语句输出提示信息。程序名:lab3_5.cpp。-11-7)调试操作步骤如下:选择菜单命令Build|StartDebug|StepIn,系统进入单步执行状态,程序开始运行,并出现一个DOS窗口,此时光标停在main()函数的入口处。把光标移到语句answer=fib(n)前,从Debug菜单单击RunToCursor,在程序运行的DOS窗口中按提示输入数字10,这时回到可视界面中,光标停在第11行,观察一下n的值。从Debug菜单中单击StepInto,程序进入fib函数,观察一下n的值,把光标移到语句return(fib(n-2)+fib(n-1))前,从Debug菜单单击RuntoCursor,再单击StepInto,程序递归调用fib函数,又进入fib函数,观察n的值。继续执行程序,参照上述的方法,观察程序的执行顺序,加深对函数调用和递归调用的理解。再试试Debug菜单栏中的别的菜单项,熟悉Debug的各种方法。4、实验原理C++中函数的重载使得同样的函数名下,只要参数类型、数目不同时,即可根据输入的数据进行相应的函数调用,使用起来简单方便。5、思考与体会C++中,函数的运用与之前学过的C语言既有相同之处,也有着不同的地方。相同的地方在于格式、用法等框架上的不变。但是C语言中对于同样的函数名是只能够申明一种函数的,倘若有相同的函数名出现系统即会报错,所以用起来有时是极为不便-12-的。而C++中,函数的多态性与重载使得这一缺点得以补偿。在对于不同的元素或对象进行同一种操作时,可以使用同样的函数名,只是对于形参类型的不同,虽然是调用的不同的函数,但是只要形参的个数、类型不同,是允许同名函数的存在的。这对于编程与审阅都是很方便的。6、部分参考代码lab3_1:#includeiostream.h//转换公式floatConvert(floatTempFer){floatcon;con=(TempFer-32)*5/9.0;returncon;}//主函数voidmain(void){floatTem;cout请输入华氏温度:endl;cinTem;cout摄氏温度为:Convert(Tem)endl;}Lab3_2:#includeiostream.h//参数为两个整形的函数intmax1(inta,intb){a=ab?a:b;returna;}//参数为三个整形的函数intmax1(inta,intb,intc){a=ab?a:b;a=ac?a:c;returna;}-13-//参数为两个双精度浮点形的函数intmax1(doublea,doubleb){a=ab?a:b;returna;}//参数为三个双精度浮点形的函数intmax1(doublea,doubleb,doublec){a=ab?a:b;a=ac?a:c;returna;}voidmain(void){inta;doubleb;a=max1(1,2);coutaendl;a=max1(3,9,5);coutaendl;b=max1(1.3,4.4);coutbendl;b=max1(3.4,5.6,7.5);coutbendl;}Lab3_3:#includeiostreamusingnamespacestd;intmax1(inta,intb){a=ab?a:b;returna;}intmax1(inta,intb,intc){a=ab?a:b;a=ac?a:c;returna;}intmain(){inti,j,k;cout请输入要比较的3个数:endl;-14-cinijk;cout最大数为:max1(i,j,k)endl;cout请输入要比较的2个数:endl;cinij;cout最大数为:max1(i,j)endl;}Lab3_4#includeiostream.h#includemath.hvoidmain(void){doublex;inty;cout请输入X,Y的值endl;cinxy;coutx^y=pow(x,y)endl;}Lab3_5#includeiostream.hintfib(intn){ints;if(n=2)s=2;elses=fib(n-1)+fib(n-2);returns;}voidmain(void){intn;coutInputn:endl;cinn;coutfib(n)endl;}-15-实验四、类与对象(2学时)1、实验目的:掌握类的定义和使用掌握类的定义和对象的声明复习具有不同访问属性的成员的访问方式。察构造函数和析构函数的执行过程。学习类的聚集使用方法。使用DEBUG来调试程序,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。2、实验任务1)定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中rank为枚举类型CPU_Rank,定义为enumCPU_Rank={P1=1,P2,P3,P4,P5,P6,P7},frequency为单位为MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。2)定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类。3、实验步骤与结果首先定义枚举类型CPU_Rank,例如enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},再定义CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,定义成员函数run、stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示信息。在主程序中定义一个CPU类的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:lab4_1.cpp。-16-使用debug调试功能观察l
本文标题:C++实验报告
链接地址:https://www.777doc.com/doc-2901646 .html