C++实验习题.doc_第1页
C++实验习题.doc_第2页
C++实验习题.doc_第3页
C++实验习题.doc_第4页
C++实验习题.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

实验注意事项l 每次实验下课前,将实验文档以附件形式发送邮箱:jiaozuoye_l 注意邮件主题与文件名相同,保持正确,否则等同未交l 实验报告格式:见实验报告样例第一次实验要求:(3月10日)一、 按实验一:二、实验内容和实验要求,运行一个简单程序。二、 提交实验报告内容包括:1、 实验二:练习题一2、 实验二:练习题二3、 实验一:自测练习一第二次实验要求:(3月17日)提交实验报告内容包括:1、 实验2:练习题三输入并运行程序,分析程序的运行结果。2、 实验2:自测练习一输入并运行程序,分析程序的运行结果。3、 实验2:自测练习二输入并运行程序,分析程序的运行结果。4、 实验2:自测练习三编写一个程序,实现在7行*7列用“#”号组成的数字“8”的图形,如图2-1所示。# # # # #图2-1用“#”号组成的数字“8”5、 实验2:自测练习四编写一个程序,计算两个整数m、n的和、差、积、商。(参考实验指导:实验3,练习题二)第三次实验要求:(3月24日)提交实验报告内容包括:1、 实验3:练习题一:已知三条边a、b、c,求三角形面积。计算三角形面积的海伦公式:2、 实验3:练习题四:输入并运行程序,分析程序的运行结果。3、 实验3:自测练习一:计算机完成一项复杂的数学计算需要40 000s,编写程序,将其转换成几小时几分几秒的表示形式。4、 实验3:自测练习四从键盘输入一个小于六位的正整数,判断它是几位数,并按照相反的顺序输出各位上的数字,例如输入2468,输出为8642。(参考教材【例4-1】)5、 实验3:自测练习五设整型变量a、b、c、d分别存放从键盘输入的4个整数。编写C+程序,按从大到小排列这4个数,使a成为最大值,d成为最小值,并且按序输出这4个数。(参考教材【例3-7】)第四次实验要求:(4月7日)提交实验报告内容包括:1、 实验4:练习题三:用牛顿迭代法求方程:3x3+2x2-8x-5=0,在x=1.5附近的根。 2、 实验4:练习题四编程序,输出以下图形* * * * * * * * *1 13 135 135713579ABBBCCCCCDDDDDDD CCCCC BBB A3、 实验4:自测练习一编写一个程序,统计输出各位数之和为9,且能被5整除的五位数的个数。注意:表述“n能被5整除”的条件表达式唯一吗?试写出2种以上。4、 实验4:自测练习三编写一个程序,求s=4!+6!+8!。 5、 实验4:自测练习四编写一个程序,求出11000之间的所有完全数。所谓完全数是指:该数的各因子之和正好等于该数本身,如6=1+2+3。6、 实验4:自测练习五计算的近似值,的计算公式为:要求:精度为10-5,并输出n的大小第五次实验要求:(4月14日)提交实验报告内容包括:1、 实验5:练习题一编程实现将10个整数升序排列。2、 实验5:练习题三矩阵是线性代数中的重要概念及研究工具,在计算机算法设计中,常常选用二维数组之类的数据结构来描述矩阵。试编程实现一个23矩阵A到32的矩阵B的转置。1 42 53 6 1 2 3 4 5 6A = B = 3、 实验5:自测练习一试统计键盘输入的一串英文字符中每种英文字符个数。要求:相同英文字符的大小写形式视为同一种统计对象;遇到任意非英文字符时统计终止;按每行10个数据的格式输出数据。4、 实验5:自测练习三A和B是两个44的下三角方阵(即行列相等)初始化后的状态,请编程输出任意方阵(键盘输入方阵的行列值)的这类初始化状态。0 0 0 70 0 4 80 2 5 91 3 6 101 0 0 0 2 3 0 04 5 6 07 8 9 10 A44 = B44 = 5、 实验5:自测练习四有M(1000以内)个猴子围成一圈,每个有一个编号,编号从1到M。打算从中选出一个大王。经过协商,决定选大王的规则如下:从第一个开始,每隔N(任意正整数)个,数到的猴子出圈,最后剩下来的就是大王。要求,从键盘输入M、N(均为正整数),试编程计算哪一个编号的猴子将成为大王。第六次实验要求:(4月21日)提交实验报告内容包括:1、 实验6:练习题三编程实现对键盘输入的英文字符进行加密。加密方法为,当内容为英文字母时,使用26个字母中该字母后的第三个字母代替该字母,即A替换为D,X替换为A等等,若为其它字符时不变。2、 实验6:自测练习一编写函数实现删除字符串中字符T的功能,要求使用内联函数。3、 实验6:自测练习二编写重载函数Max可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。4、 实验6:自测练习三设计一个打印年历的程序。要求:打印每个月的月历的功能有一个独立的函数完成,程序运行时,主程序通过若干次调用该函数完成年历的输出。注意处理闰年问题。5、 实验6:自测练习四有一个8层灯塔,每层所点灯数都等于该层上一层的两倍,一共有765盏灯,求塔底的灯数。第七次实验要求:(4月28日)提交实验报告内容包括:1、 实验7:练习题一编程实现将字符串按逆序存放,如字符串为“abcd”,运行结果为“dcba”。2、 实验7:练习题二编程实现功能:输入5个整数找出最大数和最小数所在位置,并把二者对调,然后输出调整后的5个数。3、 实验7:自测练习二编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串,输出上述结果。要求:将存放字母、数字、空格和其它字符个数的变量定义为全局变量。4、 实验7:自测练习三编程计算:(精度要求为)。要求使用静态局部变量。5、 实验7:自测练习四编写两个函数分别实现十进制数转换二,十六进制数。要求:在主函数中给十进制数和转换的进位制,输出转换结果。第八次实验要求:(5月5日)提交实验报告内容包括:1、 实验8:练习题一用一维数组和指针变量作为函数参数,编程打印某班一门课成绩的最高分及其学号。2、 实验8:练习题二 用二维数组和指针变量作为函数参数,编程打印个班学生的某门课程成绩的最高分,并指出具有该最高分成绩的学生是第几个班的第几个学生。3、 实验8:练习题三 编写一个计算字符串长度的函数,模拟库函数strlen()。4、 实验8:练习题五 编写一个函数,将三个整数按大小排序5、 实验8:自测练习五编写函数实现字符串函数strcmp的功能。6、 依据要求写出C+语句。(1) 定义变量fPtr为指向double类型的指针。(2) 把已定义变量x1(初值为5.0)的地址赋给指针变量fPtr。(3) 输出fPtr指向的变量的值。(4) 把fPtr指向的变量的值赋给变量x2。(5) 输出变量x2的值。(6) 输出x1的地址。(7) 输出存储在fPtr中的地址,输出的值是否和x1的地址一样?7、 依据要求写出C+语句。(1) 为函数exchange1编写函数首部,函数不返回任何值。该函数有x、y两个参数,它们都是指向双精度实型数的指针变量。(2) 为(1)中的函数编写函数体,交换x和y的值。(3) 为函数exchange2编写函数首部,函数不返回任何值。该函数有x、y两个参数,它们都是双精度实型数的引用。(4) 为(3)中的函数编写函数体,交换x和y的值。第九次实验要求:(5月12日)提交实验报告内容包括:1、 实验9:练习题一定义一个结构体类型Date,可以表示年、月、日。输入年、月、日,计算并输出该日在本年中是第几天。注意闰年问题。2、 实验9:练习题二编写程序用来记录30个学生的学号(num)、姓名(name)和C+成绩(score)要求:使用结构,从键盘获得数据输入,同时计算全班平均分;输出显示全部学生的信息和全班平均分;查找最高分学生并输出显示其信息。3、 实验9:自测练习一下列程序的功能是定义一个结构变量,用来存放当天的天气状况(包括日期、温度和风力),并将当天的天气状况输出显示在屏幕上。请填空将程序补充完整,并写出程序的运行结果。4、 小测验:第47章。第十次实验要求:(5月19日)提交实验报告内容包括:1、 实验10:练习题一定义一个圆形类Circle,其成员数据包括圆心坐标x和y以及半径r,所有成员数据声明为private属性,实现带所有成员数据的构造函数,生成两个Circle类的对象,其成员数据分别为:圆心坐标为(20,30)和半径为5,圆心坐标为(-20,40)和半径为30。打印输出两个圆的面积,并判断圆心分别在哪个象限。2、 实验10:练习题二定义一个员工类Employee,其成员数据包括编号id、姓名name、性别sex和职务position,实现一个打印自身信息的内联成员函数printEmployee,将修改性别的函数setSex实现为带默认参数值的函数,默认的参数为M,表示为男性。生成一个性别为F(表示为女性)的Employee对象,调用setSex成员函数将性别修改为M,调用printEmployee成员函数打印修改性别前后的对象信息。3、 实验10:练习题三定义一个课程类Course,其成员数据包括课程编号id、名称name、学时hours和主讲老师teacherInCharge,实现一个打印自身信息的成员函数printCourse,定义一个包含三个课程对象的对象数组,并使用new运算符申请一个匿名对象。调用printCourse打印四个对象的信息。请填空,完善程序代码:#include / 包含头文件iostreamusing namespace std; / 使用命名空间stdclass Coursepublic:Course()coutConstructed without Parameters.endl;Course(int pId, char* pName, int pHours, char* pTearcherInCharge);void setCourse(int pId, char* pName, int pHours, char* pTearcherInCharge);Course();void printCourse();private:int id;char* name;int hours;char* teacherInCharge;Course:Course(int pId, char* pName, int pHours, char* pTeacherInCharge)id = pId; /构造 name成员hours=pHours; /构造 teacherInCharge成员coutConstructed with Parameters.endl;void Course:setCourse(int pId, char* pName, int pHours, char* pTeacherInCharge)id = pId; /设置 name成员hours=pHours; /设置 teacherInCharge成员Course:Course() /析构 name成员 /析构 teacherInCharge成员coutDeconstructed.endl;void Course:printCourse() coutid: id, name: name, hours: hours, teacherInCharge: teacherInCharge endl ; int main()/ 定义数组对象c3c0.setCourse(1001,高等数学,56,zhangsan);c1.setCourse(1002,C+程序设计,64,lisi);c2.setCourse(1003,管理学基础,48,wangwu);/动态申请对象Course(1004,数据结构,72,zhaoliu)c0.printCourse();c1.printCourse();c2.printCourse();/输出动态对象Course(1004,数据结构,72,zhaoliu)/释放动态对象Course(1004,数据结构,72,zhaoliu)return 0;4、 实验10:练习题四定义一个汽车类Car,其成员数据包括汽车编号id、品牌brand、发动机动力power和载客人数numOfPersons,实现一个打印自身信息的成员函数printCar。定义默认构造函数、带所有成员数据的构造函数和拷贝构造函数。设某单位有三个品牌都是“丰田”的汽车,且发动机动力和载客人数都一致,只是编号不同。使用带所有成员数据的构造函数生成一个汽车对象,使用拷贝构造函数生成另外两个汽车对象,并通过调用修改编号的成员函数修改这个汽车对象的编号。最后调用printCar打印所有汽车对象的信息。完善程序代码:#include / 包含头文件iostreamusing namespace std; / 使用命名空间stdclass Carpublic:Car();Car(int pId,char* pBrand,float power,int pNumOfPersons);/*请完成深拷贝构造函数声明*/Car();void printCar();void setId(int pId);private:int id;char* brand;float power;int numOfPersons;Car:Car()coutConstructed without any parameter.endl;Car:Car(int pId,char* pBrand,float pPower,int pNumOfPersons)id = pId;brand = new charstrlen(pBrand)+1;if(brand != 0) strcpy(brand,pBrand);power=pPower;numOfPersons=pNumOfPersons;coutConstructed with all parameters.endl;/*请完成深拷贝构造函数定义*/Car:Car()delete brand;coutDeconstructed.endl;void Car:printCar()coutid: id, brand: brand, power: power, numOfPersons: numOfPersonsendl;void Car:setId(int pId)id=pId;int main()Car car1(1001,丰田,1.8f,5);Car car2=car1;car2.setId(1002);Car car3=car1;car3.setId(1003);car1.printCar();car2.printCar();car3.printCar();return 0;5、 修改程序错误#include #include using namespace std; class Point public: void Set(double ix,double iy) /设置坐标 x=ix; y=iy; double xOffset() /取 y 轴坐标分量 return x; double yOffset() /取 x 轴坐标分量 return y; double angle() /取点的极坐标 return (180/3.14159)*atan2(y,x); double radius() /取点的极坐标半径 return sqrt(x*x+y*y); private: double x; /x 轴分量 double y; /y 轴分量 void main() Point p; double x,y; cout x y; p.Set(x,y); p.x+=5;p.y+=6; cout angle= p.angle() ,radius= p.radius() ,x offset= p.xOffset() ,y offset= p.yOffset() endl; 6、 实验10:自测练习一(参考练习题一)定义一个三角形类Triangle,其成员数据包括三个边长a,b和c,所有成员数据声明为private属性,实现带所有成员数据的构造函数,生成一个Triangle类的对象,其成员数据为:a=3,b=4和c=5,打印输出该三角形对象的面积。要求:求面积的成员函数中增加a,b和c三个边长是否能够构成一个合法三角形的判断,如果不能构成合法三角形,需要给出提示。7、 实验10:自测练习四定义一个计算机类Computer,其成员数据包括计算机编号id、品牌brand、主频mainFrequency和硬盘大小hardDisk,实现一个打印自身信息的成员函数printComputer。定义默认构造函数、带所有成员数据的构造函数和拷贝构造函数。设某公司有五个品牌都是“IBM”的计算机。使用带所有成员数据的构造函数生成一个计算机对象,使用拷贝构造函数生成另外四个计算机对象,并通过调用修改编号、主频和硬盘大小的成员函数进行相应调整。最后调用printComputer打印所有计算机对象的信息。第十一次实验要求:(5月26日)1、 实验11:练习题一定义一个员工类Employee,其成员数据包括编号id、姓名name和年龄age,在构造函数中增加相关代码实现记录总员工人数和计算所有员工的平均年龄。补充并运行代码:#include / 包含头文件iostreamusing namespace std; / 使用命名空间stdclass Employeepublic:Employee(int pId,char* pName,int age);Employee();void printEmployee(); /静态成员函数声明private:int id;char* name;int age; /定义静态成员数据 ;Employee:Employee(int pId,char* pName,int pAge)id = pId;name = new charstrlen(pName)+1;if(name != 0) strcpy(name,pName);age = pAge;count+;allAges+=age;coutConstructed with all parameters.endl; /静态成员数据初始化 Employee:Employee()delete name;count-;allAges-=age;coutDeconstructed.endl;void Employee:printEmployee()coutid: id, name: name, age: ageendl;void Employee:printStat()/定义静态成员函数coutThe number of employees is: endl; coutThe average age is: endl;int main()Employee e1(1001,zhangsan,22);Employee e2(1002,lisi,23);Employee e3(1003,wangwu,25);Employee e4(1004,zhouliu,20); /使用对象名引用静态成员函数 /使用类名引用静态成员函数return 0;2、 实验11:练习题二定义一个经理类Manager,其成员数据包括编号id、姓名name和年龄age,均声明为private访问属性。再定义一个一般函数outManager为该类的友元函数,用于输出该类对象的私有信息。补充并运行代码:#include / 包含头文件iostreamusing namespace std; / 使用命名空间stdclass Managerpublic:Manager(int pId,char* pName,int age);Manager(); /声明友元函数private:int id;char* name;int age;Manager:Manager(int pId,char* pName,int pAge)id = pId;name = new charstrlen(pName)+1;if(name != 0) strcpy(name,pName);age = pAge;coutConstructed with all parameters.endl;Manager:Manager()delete name;coutDeconstructed.endl;void printManager(Manager& manager) /友元函数定义coutid: , name: , age: endl;int main()Manager m1(1001,zhangsan,22); /友元函数调用return 0;3、 实验11:自测练习一商店销售某一商品,每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在次基础上,对一次购买10件以上者,还可以享受9.8折的优惠。现在已知某天3名销售员的销售情况为:销售员编号(num) 销售件数(quantity) 销售单价(price)101 5 23.50102 12 24.56103 100 21.50编制程序计算该日此商品的总销售款sum,以及每件商品的平均售价。要求使用静态成员数据和静态成员函数。(提示:将折扣discount、总销售款sum以及销售的总商品件数n声明为静态成员数据,再定义求平均售价的静态成员函数average)4、 实验11:自测练习二定义一个经理类Manager,其成员数据包括编号id、姓名name和年龄age,均声明为private访问属性。再定义一个员工类Employee,其成员数据及其访问属性与经理类相同。将Manager类声明为Employee类的友元类,并在Manager类中定义一个函数访问Employee类的私有数据成员并进行打印输出。第十二次实验要求:(6月2日)实验12:1练习题一 定义一个基类Shape,在此基础上派生出Circle和Rectangle类,用来实现计算各种不同类型图形面积的功能。并应用相应类的对象测试。 程序代码#includeusing namespace std; class Shape /基类Shape的定义 public: Shape() Shape() double getArea()const; class Circle: public Shape / 派生类Circle定义public: Circle (double = 0.0 ); Circle (); double getArea() const; / 返回面积private: double radius; / 圆半径; class Rectangle : public Shape / 派生类Rectangle定义public: Rectangle( int = 0, int = 0); / 构造函数 Rectangle() double getArea() const; / 返回面积private: int a,b; / 矩形的长和宽; double Shape:getArea() const return 0.0; / Shape类getArea函数的定义Circle:Circle( double radiusValue )radius= radiusValue ; /Circle类构造函数double Circle:getArea() const return 3.14159 * radius * radius; /Circle类getArea函数定义Rectangle:Rectangle( int aValue, int bValue )a=aValue; b=bValue; / Rectangle类构造函数double Rectangle:getArea() const return a * b; / Rectangle类getArea函数定义void main() Circle circle ( 3.5 ); / 创建Circle类对象 Rectangle rectangle (5, 10 ); / 创建Rectangle类对象 coutThe area of the circle is circle.getArea()endl; coutThe area of the rectangle is rectangle.getArea()endl; 思考题及问题修改程序,增加计算正方形面积的功能。提示:在Rectangle类的基础上创建派生类Square,代码如下:class Square: public Rectangle public: Square(float len); Square() ; Square:Square(float len):Rectangle(len,len) 在main函数中增加如下语句:Square square(5); coutThe area of the Square issquare.GetArea()endl;2练习题二 阅读下面程序,找出语法错误所在的行,说明错误的原因并改正之。将第10行分别改为protected:和public:,再进行上面的操作;将第13行的的公有继承分别改为保护继承和私有继承,再进行上面的操作。1) #include2) using namespace std;3) class Point /基类Point类的定义4) 5) public: /公有函数成员6) void InitP(float xx=0, float yy=0) X=xx;Y=yy;7) void Move(float xOff, float yOff) X+=xOff;Y+=yOff;8) float GetX() return X;9) float GetY() return Y;10) private: /私有数据成员11) float X,Y;12) ;13) class Rectangle: public Point/派生类声明部分14) 15) public: /新增公有函数成员16) void InitR(float x, float y, float w, float h)17) X=x; Y=y; /访问基类私有数据成员18) W=w;H=h;19) 20) float GetH() return H;21) float GetW() return W;22) private: /新增私有数据成员23) float W,H;24) ;25) void main()26) 27) Rectangle rect;28) coutrect.X; 29) coutrect.GetX();30) 3自测练习一阅读下面程序,写出运行结果并上机调试运行。#includeusing namespace std;class Apublic: A()cout”constructing A”ednl; A()cout”desstructing A”ednl;class B:public Apublic: B()cout”constructing B”ednl; B()cout”desstructing B”ednl;class C:public Bpublic: C()cout”constructing C”ednl; C()cout”desstructing C”ednl;int main()C c1;return 0;4自测练习二阅读下面程序,写出运行结果并上机调试运行。#include using namespace std;class B1/基类B1,构造函数有参数 public:B1(int i) val1=i;coutconstructing B1 val1endl;B1() coutdeconstructing B1 val1endl;private: int val1;class B2/基类B2,构造函数有参数 public:B2(int j) val2=j;coutconstructing B2 val2endl;B2() coutdeconstructing B2 val2endl;private: int val2;class B3/基类B3,构造函数无参数 public:B3() coutconstructing B3 endl;B3() coutdeconstructing B3 endl;class C: public B2, public B1, public B3 public: C(int a, int b): B1(a),B2(b);void main() C obj(1,2); 5自测练习三阅读下面程序,写出运行结果并上机调试运行。#includeusing namespace std;class A public: int nv;A(int x) nv = x; cout constructor of A: nv endl; void fun()cout Member of A: nv endl;class B1:virtual public A public: int nv1; B1(int x,int y):A(y)nv1= x; cout constructor of B1: nv1 endl;class B2:virtual public A public: int nv2;B2(int x,int y):A(y) nv2 = x; cout constructor of B2: nv2 endl;class C:public B1,public B2 public: C(int x, int y, int z): B1(y,x),B2(z,x),A(x) cout constructor of C: nv endl;void main() C c1(1,2,3); c1.nv = 2; c1.fun();6自测练习四阅读下面程序,写出运行结果并上机调试运行。#includeusing namespace std;class Base1public: Base1() cout Base1n; ;class Base2public: Base2() cout Base2n; ;class Base3public: Base3() cout Base3n; ;class Base4public: Base4() cout Base4n; ;class Derived :public Base1, virtual public Base2,public Base3, virtual public Base4public: Derived() :Base4(), Base3(), Base2(), Base1();void main() Derived aa;7自测练习五阅读下面程序,找出语法错误并改正之;写出程序运行结果并上机调试运行验证之。#includeusing namespace std;class A public: int n; ; class B:public A; class C:public A; class D:public B,public C int getn()return n; ; void main() D d; d.n=10; coutd.nendl; 第十三次实验要求:(6月9日)实验13:1练习题一 定义一个基类Shape,由Shape派生出Circle和Rectangle类,用来实现计算各种不同类型图形面积的功能。 要求将类族的定义部分保存为头文件shape.h,将类族的成员函数的定义保存为源文件shape.cpp,最后建立一个主程序文件,命名为sy13_1.cpp。 程序代码/sy13_1:shape.hclass Shape /基类Shape的定义public: double getArea()const;void print()const; ; /Shape类定义结束 class Circ

温馨提示

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

评论

0/150

提交评论