当前位置:文档之家› 天津理工大学C++期末考试

天津理工大学C++期末考试

实验一一、明确的概念:(1)理解类和对象的概念;(具体见附一)类是抽象的对象是具体的例如:你、我、他都是人那么你、我、他就是对象人就是类(2)掌握类与对象的定义方法;类的定义:class 类名{ … /*定义这个类*/}; 员名或成员函数不能通过外部直接访问(不声明访问属性时系统默认为私有)当出现对象名.成员(私有)时编译器报错与private类似但protected属性的成员可以继承 private不能继承(4)掌握构造函数和析构函数的含义与作用、定义方式和实现;构造函数:为数据成员开辟存储空间函数名必须与类名相同之前绝对不许说明返回值类型 void也不行构造函数是随着对象的声明而调用的例如:classStudent{Student(){cout<<”Hello.”<<endl;}};Int main(void){cout<<”Hello.”<<endl;Student A;}运行结果:Hello. <<endl;}int getx(){return x;}int gety(){return y;}private:int x, y;};Coordinate::Coordinate(Coordinate &p){<<endl; }int main(){Coordinate p3=p2;cout<<"p3=("<<()<<","<<()<<")"<<endl;}(1)记录程序的运行结果(2)将Coordinate 类中带有两个参数的构造函数进行修改,在函数体内增加如下语句:cout<<”Constructor is called.”<<endl;重新记录程序的运行结果,并解释输出结果。

(3)按下列要求进行测试。

在主函数体内,添加如下语句: Coordinate p4;错误原因:构造函数没有参数 构造函数为Coordinate::Coordinate(int ,int)Coordinate p5(2); 错误原因:参数数量不对1.根据注释语句的提示实现类Date 的成员函数,并将完整的程序编译、连接成功以保证程序能够正确运行。

#include <> class Date{ public:void printDate(); 下面是一个计算器类的定义,请完成该类的成员函数的实现,并设计一个主函数使用该类和相关成员函数以测试 该类设计的正确性。

#include <iostream>using namespace std;分析:1.题目中 Date 类的数据成员为day, month, year 且均为整型访问属性为私有 主函数中声明了testDay 对象2.数据成员均为私有 则不能通过=<数值>的方法来设置 题目中给出了 void setDay(int) void setMonth(int) 和voidclass counter{public:counter(int number=0) 定义一个类ClsName,要求该类设计如下:(1)该类有两个整型数据成员x和y;(2)为该类重载三个不同的构造函数:分别为无参数、带一个参数和带两个参数的构造函数,要求在构造函数中输出必要的信息以示区别;(3)设计2个成员函数用来读取数据成员x和y;(4)设计2个成员函数用来设置数据成员x和y;(5)设计1个成员函数用来在屏幕上打印输出数据成员x和y;(6)在main()函数中用三个不同的构造函数创建3个对象,并使用所有的成员函数对这些对象进行必要的操作。

class ClsName{public:int a,b;ClsName(int a,int b){cout<<"Construct by two numbers."<<endl;x=a,y=b;}<<endl;x=a,y=b;}<<endl;x=a,y=b;} int getx(){return x;}因为x,y 的访问属性为私有,不能由主函数直接访问所以会设置读取函数专门负责返回相应的值 int gety(){return y;}void setx(){cout<<"Change X:";cin>>x;}void sety(){cout<<"Change Y:";cin>>y;}void print(){cout<<"X="<<getx()<<'\t'<<"Y="<<gety()<<endl;} private:int x,y; (1)中要求的两个整型数据成员 };int main() {int a,b;cout<<"Test1:Input with 2 numbers, now please input two numbers:"<<endl; cin>>a;cin>>b; ClsName t1(a,b);重载:函数名相同,参数的类型不同或者个数不同、或者都不同。

即根据带入参数的类型、数量的不同,来实现不同的功能();();();();cout<<"\nTest2:Input with a numbers, now please input a number:";cin>>a;ClsName t2(a);();();();();cout<<"\nTest3:Without numbers";ClsName t3;();();();();return 0;5.建立类cylinder,包括两个数据成员radius和height,分别表示圆柱体的半径和高度, cylinder类的构造函数被传递了两个double值来初始化这两个成员;定义成员函数area()和volume用来求圆柱体的表面积和体积,定义成员函数print()打印cylinder类的相关信息。

最后,在主函数中对cylinder类的设计进行测试。

这题很简单没啥说的#include<>class cylinder{public:void set(double r,double h){radius=r,height=h;}double area(){return (radius*;}double volume(){return (height*area());}void print(){cout<<"Area="<<area()<<'\t'<<"Volume="<<volume()<<endl;} private:double radius,height;};int main(){int a,b;cylinder v;cout<<"Radius=";cin>>a;cout<<"Height=";cin>>b;(a,b);();return 0;}6.定义一个学生类CStudent实现简单的学籍管理功能,要求该类至少实现以下功能:(1) 录入学生的基本信息(包括姓名,学号,性别,年龄,专业,入学时间,各门功课成绩)(2) 输出学生的基本信息(3) 选课(输入时间和所选的课程)(4) 统计每门课的学分绩点(5) 统计每学期的平均学分绩点(6) 统计重考科目(7) 统计重修科目#include<iostream>#include<string>using namespace std;const MAX=4;class CStudent{for(int i=0;i<MAX;i++){cout<<"Mark:";cin>>mark[i];}}void baseprint() .相当于score=score+... 无法确定第一个score的值retry=0;for(i=0;i<MAX;i++){if(mark[i]>=60)score+=m_mark[i]; 2010-3-23”,否则会导致部分功能不正常(5)掌握静态数据成员和静态成员函数的使用方法;例如:有Object类,拥有数据成员a,由Object类声明出的对象A、B、C,那么A、B、C都拥有各自的a,内存中也会分配出各自的内存空间A::a,B::a,C::a(共3个)。

而如果将数据成员a声明为静态成员(static),那么A、B、C则共用一个内存空间a(只有1个)最典型的例子是统计声明对象的数量使用方法:static 数据类型数据成员名由于不能直接对数据成员赋初值所以静态数据成员初始化方法为:数据类型类名::静态数据成员名=初值(注意:1.是类名,不是对象名;2.之前不要加static)静态成员函数静态成员函数属于整个类而不是某个对象所以调用方法为类名::静态成员函数名(参数表)其他参看书P103几点说明练习项目Time类的框架定义如下:#include<>计一个用来表示直角坐标系的Location类,在主程序中创建类Location的两个对象A 和B,要求A的坐标在第3象限,B的坐标点在第2象限,分别采用成员函数和友元函数计算给定两个坐标点之间的距离,要求按如下格式输出结果:A(x1, y1), B(x2, y2)Distance1=d1Distance2=d2其中:x1, x2, y1, y2为指定的坐标值,d1和d2为两个坐标点之间的距离。

Location 类框架可参考如下:#include<>#include<cmath>class Location ";} private:double x,y;};Location::Location(double a,double b) {x=a;y=b;}double Location::Getx(){return x;}double Location::Gety(){return y;}double Location::distance1(Location &L){return sqrt(*+*);}int main(){double a,b;cout<<"输入A点坐标(在第二象限):"<<endl;cout<<"x(x<0):";for(;;){cin>>a;if(a<0)break;cout<<"不对,再来一次:";}cout<<"y(y>0):";for(;;){cin>>b;if(b>0)break;cout<<"不对,再来一次:";}Location A(a,b);cout<<"输入B点坐标(在第四象限):"<<endl;cout<<"x(x>0):";for(;;){cin>>a;if(a>0)break;cout<<"不对,再来一次:";}cout<<"y(y<0):";for(;;){cin>>b;if(b<0)break;cout<<"不对,再来一次:";}Location B(a,b);cout<<"A("<<()<<","<<()<<")"<<endl;cout<<"B("<<()<<","<<()<<")"<<endl;cout<<"Distance1="<<(B)<<endl;cout<<"Distance2="<<distance2(A,B)<<endl;return 0;}3.使用C++的string类,将5个字符串按逆转后的顺序显示出来。

相关主题