计算机科学与技术学院
天津理工大学
计算机科学与技术学院
实验报告
至 学年 第 学期
课程名称 学号 专业 实验时间 主讲教师 辅导教师 C++程序设计应用 物联网 学生姓名 教学班号 年级 实验地点 实验( 一 ) 实验名称 类和简单对象 Visual C++ 6.0 软件环境 无 硬件环境 计算机科学与技术学院
实验目的 (1)理解类和对象的概念; (2)掌握类与对象的定义方法; (3)理解类的成员的访问控制的含义,公有和私有成员的区别; (4)掌握构造函数和析构函数的含义与作用、定义方式和实现; (5)能够根据给定的要求定义类并实现类的成员函数; (6)掌握string类的使用方法 (7)了解C++面向对象程序设计的基本思想、基本方法和基本步骤; (8)掌握MS Visual C++6.0调试C++程序的基本方法、基本步骤。 实验内容(应包括实验题目、实验要求、实验任务等) 2
计算机科学与技术学院
1.(1)记录程序的运行结果 (2)将Coordinate类中带有两个参数的构造函数进行修改,在函数体内增加如下语句: cout<<”Constructor is called.”<计算机科学与技术学院(3_按下列要求进行测试。 在主函数体内,添加如下语句: Coordinate p4; Coordinate p5(2); 测试程序会出现什么错误?为什么?如何对已有的构造函数进行适当的修改? [--------------------Configuration: aaa - Win32 Debug-------------------- Compiling... a.cpp D:\\Program Files\\Microsoft Visual Studio\\MyProjects\\aaa\\a.cpp(22) : error C2512: 'Coordinate' : no appropriate default constructor available D:\\Program Files\\Microsoft Visual Studio\\MyProjects\\aaa\\a.cpp(23) : error C26: '__thiscall Coordinate::Coordinate(class Coordinate &)' : cannot convert parameter 1 from 'const int' to 'class Coordinate &' A reference that is not to 'const' cannot be bound to a non-lvalue Error executing cl.exe. a.obj - 2 error(s), 0 warning(s)] 修改如下: #include using namespace std; class Coordinate { public: Coordinate(int x1, int y1){x=x1; y=y1;cout<<\"Constructor is called.\"<Coordinate::Coordinate(int a) { } int main(){ Coordinate p4; Coordinate p1(3,4); Coordinate p2(p1); Coordinate p5(2); Coordinate p3=p2; cout<<\"p3=(\"< class Date{ public: void printDate(); //显示日期 void setDay(int); //设置日的值 void setMonth(int); //设置月的值 void setYear(int); //设置年的值 private: int day, month, year; }; void Date::setDay(int d) { day=d; } 5计算机科学与技术学院
void Date::setMonth(int m) { month=m; } void Date::setYear(int y) { year=y; } void Date::printDate() { cout<<\"Today is \"< using namespace std; class coutner { public: counter(int number); //构造函数 void increment(); //给value原值加1 void decrement(); //给value原值减1 int getvalue(); //取得计数器值 int print(); //显示计数 private: int value; //数据成员 }; coutner::counter(int o) { value=o; } 6计算机科学与技术学院
void coutner::increment() { value++; } void coutner::decrement() { value--; } int coutner::getvalue() { return value; } int coutner::print() { cout<<\"The value is \"<4.#include using namespace std; class Cls { private: int x; int y; public: Cls(); Cls(int); Cls(int,int); int getx(); int gety(); void setx(int); void sety(int); void print(); }; int Cls::getx(){return x;} int Cls::gety(){return y;} void Cls::setx(int a){x=a;} void Cls::sety(int b){y=b;} void Cls::print(){cout<<\"x=\"<计算机科学与技术学院5.#include using namespace std; const double PI=3.14; class cylinder { private: double radius; double height; public: cylinder(double,double); void setr(double); void seth(double); double area(); double volume(); void print(); }; cylinder::cylinder(double r,double h) { radius=r; height=h; } void cylinder::seth(double h) { height=h; } void cylinder::setr(double r) { radius=r; } double cylinder::area() { return 2*PI*radius*height+2*PI*radius*radius; } 9计算机科学与技术学院
double cylinder::volume() { return PI*radius*radius*height; } void cylinder::print() { cout<<\"The area is \"<6.#include #include using namespace std; class stu { public: mingzi(char *ming); xuehao(int hao); xingbie(int xing); nianling(int nian); zhuanye(char *zhuan); ruxueshijian(int ru); chengji(int jisuanji,int shuxue,int yingyu,int xuan); xuanke(char *xuanming); cha(); shuchu(); pingjun(); chongxiu(); private: char mz[15],zhy[20],xkm[20]; char *a,*b,*c; int xh,nl,rxshj,m,n,xb; int jsjchj,shxchj,yychj,xk; float o,p,q,r; }; stu::mingzi(char *ming) { a=strcpy(mz,ming); } stu::xuehao(int hao) { xh=hao; } stu::xingbie(int xing) { xb=xing; } stu::nianling(int nian) { nl=nian; } stu::zhuanye(char *zhuan) 11 、、 if(yychj>=80&&yychj<=84){q=3.0;cout<<\"英语 3.0\"<计算机科学与技术学院{ b=strcpy(zhy,zhuan); } stu::ruxueshijian(int ru) { rxshj=ru; } stu::shuchu() { cout<<\"专业:\"<=96){o=4.5;cout<<\"计算机 4.5\"<=90&&jsjchj<=95){o=4.0;cout<<\"计算机 4.0\"<=85&&jsjchj<=){o=3.5;cout<<\"计算机 3.5\"<=80&&jsjchj<=84){o=3.0;cout<<\"计算机 3.0\"<=75&&jsjchj<=79){o=2.5;cout<<\"计算机 2.5\"<=70&&jsjchj<=74){o=2.0;cout<<\"计算机 2.0\"<=65&&jsjchj<=69){o=1.5;cout<<\"计算机 1.5\"<=60&&jsjchj<=){o=1.0;cout<<\"计算机 1.0\"<=96){p=4.5;cout<<\"数学 4.5\"<计算机科学与技术学院if(shxchj>=90&&shxchj<=95){p=4.0;cout<<\"数学 4.0\"<=85&&shxchj<=){p=3.5;cout<<\"数学 3.5\"<=80&&shxchj<=84){p=3.0;cout<<\"数学 3.0\"<=75&&shxchj<=79){p=2.5;cout<<\"数学 2.5\"<=70&&shxchj<=74){p=2.0;cout<<\"数学 2.0\"<=65&&shxchj<=69){p=1.5;cout<<\"数学 1.5\"<=60&&shxchj<=){p=1.0;cout<<\"数学 1.0\"<=96)cout<<\"英语 4.5\"<=85&&yychj<=){q=3.5;cout<<\"英语 3.5\"<=80&&yychj<=84){q=3.0;cout<<\"英语 3.0\"<=75&&yychj<=79){q=2.5;cout<<\"英语 2.5\"<=70&&yychj<=74){q=2.0;cout<<\"英语 2.0\"<=65&&yychj<=69){q=1.5;cout<<\"英语 1.5\"<=60&&yychj<=){q=1.0;cout<<\"英语 1.0\"<=96)cout<=90&&yychj<=95){q=4.0;cout<<\"英语 4.0\"<=85&&yychj<=){q=3.5;cout<<\"英语 3.5\"<=80&&yychj<=84){q=3.0;cout<<\"英语 3.0\"<=75&&yychj<=79){q=2.5;cout<<\"英语 2.5\"<=70&&yychj<=74){q=2.0;cout<<\"英语 2.0\"<=65&&yychj<=69){q=1.5;cout<<\"英语 1.5\"<=60&&yychj<=){q=1.0;cout<<\"英语 1.0\"<=96)cout<=90&&xk<=95){r=4.0;cout<=85&&xk<=){r=3.5;cout<=80&&xk<=84){r=3.0;cout<=75&&xk<=79){r=2.5;cout<=70&&xk<=74){r=2.0;cout<=65&&xk<=69){r=1.5;cout<=60&&xk<=){r=1.0;cout<计算机科学与技术学院stu::pingjun() { float x; x=(o+p+q+r)/4; cout<<\"平均绩点为: \"<>y; if(y<60) {cout<<\"需重修\"<>hao; cout<<\"请输入性别:(1.男 2.女)\"<>xing; cout<<\"请输入年龄:\"<>nian; cout<<\"请输入入学时间:(例如200709)\"<>ru; 14计算机科学与技术学院
a.xuehao(hao); a.ruxueshijian(ru); a.mingzi(name); a.xingbie(xing); a.nianling(nian); a.zhuanye(zhuan); a.shuchu(); cout<<\"请输入各门功课成绩:计算机、数学、英语、\"<>jisuanji>>shuxue>>yingyu>>xuan;; a.chengji(jisuanji,shuxue,yingyu,xuan); a.xuanke(xuanming); a.cha(); a.pingjun(); a.chongxiu(); } 15计算机科学与技术学院
附录(可包括源程序清单或其它说明)
16