面向对象程序设计(C++) 实验指导书
实验 1 类和对象
1.1实验目的和要求
(1) 理解类和对象的概念,掌握声明类和定义对象的方法。
(2) 掌握构造函数和析构函数的实现方法。
(3) 初步掌握使用类和对象编制C++程序。
(4) 掌握对象数组、对象指针和string类的使用方法。
(5) 掌握使用对象、对象指针和对象引用作为函数参数的方法。
(6) 掌握类对象作为成员的使用方法。
(7) 掌握静态数据成员和静态成员函数的使用方法。
(8) 理解友元的概念和掌握友元的使用方法。
1.2实验内容和步骤
1.输入下列程序
//test4-1.cpp
#include
using namespace std;
class Coordinate
{ public:
Coordinate(int x1,int y1)
{ x=x1;
y=y1;
}
Coordinate(Coordinate &p);
~Coordinate()
{ cout<<”Destructor is calleded\n”;}
int getx()
{return x;}
int gety()
{return y;}
private:
int x,y;
};
Coordinate::Coordinate(Coordinate &p)
{ x=p.x;
y=p.y;
cout<<”copy-initialization Constructou is called\n”;
}
int main()
{ Coordinate p1(3,4);
Coordinate p2(p1);
Coordinate p3=p2;
cout<<”p3=(“< return(0); } (1)写出程序的运行结果。 copy-initialization Constructou is called copy-initialization Constructou is called p3 =(3,4) Destructor is calleded Destructor is calleded Destructor is calleded (2)将Coordinate类中带有两个参数的构造函数进行修改,在函数体内增添下述语句: cout<<”Constructor is called.\n”; 写出程序的运行结果,并解释输出结果。 Constructor is called. copy-initialization Constructou is called copy-initialization Constructou is called p3 =(3,4) Destructor is calleded Destructor is calleded Destructor is calleded (3)按下列要求进行调试: 在主函数体内,添加下列语句: Coordinate p4; Coordinata p5(2); 调试程序时会出现什么错误?为什么?如何对已有的构造函数进行适当修改? 调用函数时找不到对应的函数,因为没有定义不含参数的函数,和只含一个参数的构造函数,所以调用函数时找不到这样的函数,应该给构造函数赋初值。Coordinate(int x1=0,int y1=0) (4)经过以上第(2)步和第(3)步的修改后,结合运行结果分析:创建不同的对象时会调用不同的构造函数。 //test4-1.cpp #include using namespace std; class Coordinate { public: Coordinate(int x1=0,int y1=0) { x=x1; y=y1; cout<<"Constructor is called.\n"; } Coordinate(Coordinate &p); ~Coordinate() { cout<<"Destructor is calleded\n";} int getx() {return x;} int gety() {return y;} private: int x,y; }; Coordinate::Coordinate(Coordinate &p) { x=p.x; y=p.y; cout<<"copy-initialization Constructou is called\n"; } int main() { Coordinate p1(3,4); Coordinate p2(p1); Coordinate p3=p2; Coordinate p4; Coordinate p5(2); cout<<"201240420224李后浪\n"; cout<<"p3=("< return(0); } 2.设计一个4*4魔方程序,让魔方的各行值的和等于各列值的和,并且等于两对角线值的和。例如一下魔方: 31 3 5 25 9 21 19 15 17 13 11 23 7 27 29 1 各行、各列以及对角线值的和都是64. 【提示】 求4*4魔方的一般步骤如下: (1)设置初始魔方的起始值和相邻元素之间的差值。例如上述魔方的初始魔方的起始值(first)和相邻元素之间的差值(step)分别为: first=1 step=2 (2)设置初始魔方元素的值。例如上述魔方的初始魔方为: 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 (3)生成最终魔方。方法如下: 错误!未找到引用源。求最大元素值与最小元素值的和sum,该实例的sum是: 1+31=32 错误!未找到引用源。用32减去初始魔方所有对角线上元素的值,然后将结果放在原来的位置,这样就可求得最终魔方。本例最终魔方如下: 31 3 5 25 9 21 19 15 17 13 11 23 7 27 29 1 本题的魔方类magic的参考框架如下: class magic { public: void getdata(); void setfirstmagic(); void generatemagic(); void printmagic(); private: int m[4][4]; int step; int first; int sum; }; 3.设计一个用来表示直角坐标系的Location类,在主程序中创建类Location的两个对象A和B,要求A的坐标点在第3象限,B的坐标在第2象限,分别采用成员函数和友元函数计算给定两个坐标点之间的距离,要求按如下格式输出结果: A(x1,y1),B(x2,y2) Distance1=d1 Distance1=d2 其中:x1、x2、y1、y2为指定的坐标值,d1和d2为两个坐标点之间的距离。 【提示】 类Location的参考框架如下: class Location { public: Location(double,double); double Getx() double Gety() double distance(Location &); friend double distance (Location &,Location &); private: double x,y; }; 4.声明一个Student类,在该类中包括一个数据成员score(分数)、两个静态数据成员total_score(总分)和count(学生人数);还包括一个成员函数account()用于设置分数、累计学生成绩之和、累计学生人数,一个静态成员函数sum()用于返回学生的成绩之和,另一个静态成员函数average()用于求全班成绩的平均值。在main函数中,输入某班同学的成绩,并调用上述函数求出全班学生的成绩之和和平均分。 5.使用C++的string类,将5个字符串按逆转后的顺序显示出来。例如,逆转前的5个字符串是: Germany Japan America Britain France 按逆转后的顺序输出字符串是: France Britain America Japan Germany 实验2 派生类与继承 2.1实验目的和要求 (1) 掌握派生类的声明方法和派生类构造函数的定义方法。 (2) 掌握不同继承方式下,基类成员在派生类中的访问属性。 (3) 掌握在继承方式下,构造函数与析构函数的执行顺序与构造规则。 (4) 学习虚基类在解决二义性问题中的作用。 2.2实验内容与步骤· 1.输入下列程序。 //test4_1.cpp #include using namespace std; class Base{ public: void setx(int i) {x=i;} Int getx() {return x;} public: int x; }; class Derived:public Base{ public: void sety(int i) {y=i;} int gety() {return y;} void show() {cout<<”Base::x=”< } public: inty; }; int main() {Derived bb; bb,setx(16); bb.sety(25); bb.show(); cout<<”Base::x=”< cout<<”Derived::y=”< cout<<”Base::x=”< cout<<”Derived::y=”< return 0; } (1)写出程序的运行结果。 (2) 按以下要求,对程序进行修改后再调试,指出调试中出错的原因。 错误!未找到引用源。将基类Base中数据成员x的访问权限改为private时,会出现哪些错误?为什么? 错误!未找到引用源。将基类Base中数据成员x的访问权限改为protected时,会出现哪些错误?为什么? 错误!未找到引用源。在源程序的基础上,将派生类Derived的继承方式改为private时,会出现哪些错误?为什么? 错误!未找到引用源。在源程序的基础上,将派生类Derived的继承方式改为protected 时,会出现哪些错误?为什么? 2.编写一个学生和教师的数据输入和显示程序。学生数据有编号、姓名、性别、年龄、系别和成绩,教师数据有编号、姓名、性别、年龄、职称和部门。要求将编号、姓名、性别、年龄的输入和显示设计成一个类Person,并作为学生类Student和教师类Teacher的基类。 供参考的类结构如下: class Person{ ... }; class Student:public Person{ ... }; class Teacher:public Person{ ... }; 3.按要求阅读、编辑、编译、调试和运行以下程序。 (1) 阅读、编辑、编译、调试和运行以下程序,并写出程序的运行结果。 //test4_3_1.cpp #include #include using namespace std; class MyArray{ public: MyArray(int leng); ~MyArray{}; void Input(); void Display(string); protected: int*alist; int length; }; MyArray::MyArray(int leng) {if(leng<=0) {cout<<”error length”; exit(1); } alist=new int [leng]; length=leng; if(alist==NULL) {cout<<”assign failure”; exit(1); } cout<<”MyArray类对象已创建。”< } MyArray::~MyArray() {delete[] alist; cout<<”MyArray类对象被撤销。”< } void MyArray::Display(string str) {int i; int *p=alist; cout< for(i=0;i cout<<*p<<””; cout< } void MyArray::Input{} {cout<<”请键盘输入”< int i; int *p =alist; for(i=0;i cin>>*p; } int main() {MyArray a(5); a.Input(); a.Display(“显示已输入的”); return 0; } (2) 声明一个类SortArray继承类MyArray,在该类中定义一个函数,具有将输入的整数从小到大进行排序的功能。 【提示】 在第(1)步的基础上可增加下面的参考框架: class SortArray : public MyArray { public: void Sort(); SortArray(int leng):MyArray(leng) {cout<<”SortArray类对象已创建。”< } virtual ~SortArray(); }; SortArray::~SortArray() {cout<<”SortArray类对象被撤销。”< } void SortArray::Sort() { //请自行编写Sort函数的代码,将输入的整数从小到大排序。 } //并将主函数修改为: int main() {SortArray a(5); s.Input(); s.Display(“显示排序以前的”); s.Sort(); s.Display(“显示排序以后的”); return 0; } 声明一个类ReArray继承类MyArray,在该类中定义一个函数,具有将输入的整数进行倒置的功能。 【提示】 在第(1)步的基础上可增加下面的参考框架: Class ReArray:public MyArray{ Public: Void reverse(); ReArray(int leng); Virtual ~ReArray(); }; 请读者自行编写构造函数、析构函数和倒置函数ReArray,以及修改主函数。 (3) 声明一个类AverArray继承类MyArray,在该类中定义一个函数,具有求输入的整数平均值的功能。 【提示】 在第(1)步的基础上增加下面的参考框架: class AverArray:public MyArray{ Public: AverArray(int leng); ~AverArray(); Double Aver(); }; 请读者自行编写构造函数、析构函数和求平均值函数Aver(求解整数的平均值),以及修改主函数。 (2)声明一个NewArray类,同时继承了类SortArray,ReArray和AverArray,使得类 NewArray的对象同时具有排序、倒置和求平均值的功能。在继承的过程中声明 MyArray为虚基类,体会虚基类在解决二义性问题中的作用。 实验3 多态性 3.1实验目的和要求 (1) 了解多态性的概念。 (2) 掌握运算符重载的基本方法。 (3) 掌握虚函数的定义和使用方法。 (4) 掌握纯虚函数和抽象类的概念和用法。 3.2实验内容与步骤 1.分析并调试下列程序,写出程序的输出结果,并解释输出结果。//test5_1.cpp #include using namespace std; class B{ public: virtual void f1 (double x) {cout<<”B::f1(double)”< } void f2(double x) {cout<<”B::f2(double)”<<2*x< } void f3(double x) {cout<<”B::f3(double)”<<3*x< } } class D:public B{ public: virtual void f1(double x) {cout<<”D::f1(double)”< } void f2(double x) {cout<<”D::f2(double)”<<2*x< } void f3(double x) {cout<<”D::f3(double)”<<3*x< } }; int main() {D d; B*pb=&d; D*pd=&d; pb->f1(1.23); pb->f1(1.23); pb->f2(1.23); pb->f3(1.23); pb->f3(3.14); return 0; } 2.编写一个程序,其中设计一个时间类Time,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。要求将小时范围限制在大于等于0,分钟范围限制在0~59,秒钟范围限制在0~59秒。 【提示】 时间类Time{ public: Time(int h=0,int m=0,int s=0); Time operator+(Time&); void disptime(string); private: int hourse; int minutes; int seconds; }; 3.给出下面的抽象基类container; class container { protected: double radius; public: container(double radius1); virtual double surface_area()=0; virtual double volume()=0; }; 要求建立3个继承container的派生类cube、sphere与cylinder,让每一个派生类都包含虚函数surface_area()和volume(),分别用来计算正方体、球体和圆柱体的表面积及体积。要求写出主程序,应用C++的多态性,分别计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。 4.编写一个程序,用于进行集合的并、差和交运算。例如输入整数集合{9 5 4 3 6 7}和{2 4 6 9 },计算出它们进行集合的并、差和交运算后的结果。 【提示】 i.可用以下表达式实现整数集合的基本运算: s1+s2 两个整数集合的并运算 s1-s2 两个整数集合的差运算 s1*s2 两个整数集合的交运算 ii.参考以下Set类的框架,用于完成集合基本运算所需的各项功能。 class set{ public: set::set(); void set::input(int d); int set::length(); int set::getd(int i); void set::disp(); set set::operator+(set s1); set set::operator-(set s1); set set::operator*(set s1); set set::operator=(set s1); protected: int len; int s[MAX]; }; 实验 4 模板与异常处理 4.1 实验目的和要求 (1)正确理解模板的概念。 (2)掌握函数模板和类模板的声明和使用方法。 (3)学习简单的异常处理方法。 4.2 实验内容和步骤 1.分析并调试下列程序,写出运行结果并分析原因。 (1) //test6_1_1.cpp #include using namespace std; template T max (T x,T y) { return x>y? x:y; } int max(int a,int b) {return a>b? a:b; } double max (double a,double b) {return a>b? a:b; } int main() { cout<<”max(…3?,?7?) is “< return 0; } (2) //test6_1_2.cpp #include using namespace std; int max(int a,int b) {return a>b? a:b; } double max (double a,double b) {return a>b? a:b; } int main() { cout<<”max(…3?,?7?) is “< return 0; } 2.编写一个求任意类型数组中最大元素和最小元素的程序,要求将求最大元素和最小元素 的函数设计成函数模板。 3.编写一个程序,使用类模板对数组元素进行排序、倒置、查找和求和。 【提示】 设计一个类模板 template class Array{ ... }; 具有对数组元素进行排序、倒置、查找和求和功能,然后产生类型实参分别为int型和double 型的两个模板类,分别对整型数组与双精度数组完成所要求的操作。 4.编写一个程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示。 实验 5 C++的流类库与输入输出 5.1 实验目的和要求 (1)掌握C++格式化的输入输出方法。 (2)掌握重载运算符“<<”和“>>”的方法。 (3)掌握磁盘文件的输入输出方法。 5.2 实验内容和步骤 1. 下面给出的test7_1_1.cpp程序用于打印九九乘法表,但程序中存在错误。请上机调试,使得此程序运行后,能够输出如下所示的九九乘法表。 * 1 2 3 4 5 6 7 8 9 1 1 2 2 4 3 3 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81 //test7_1_1.cpp #include #include using namespace std; int main() { int i,j; cout<<”*”; for(i=1;i<=9;i++) cout< cout< for(i=1;i<=9;i++) { cout< for(j=1;j<=i;j++) Cout< } return 0; } 2.下面的程序用于统计文件xyz.txt中的字符个数,请填空完成程序。 //test7_2_1.cpp #include #include using namespace std; int main() { char ch; int i=0; ifstream file; file.open(“xyz.txt”,ios::in); if( 错误!未找到引用源。 ) { cout<<”xyz.txt cannot open”< abort(); } While (!file.eof()) { 错误!未找到引用源。 i++; } cout<<”文件字符个数:”< 错误!未找到引用源。 return 0; } 3.重载运算符“<<”和“>>”,使其能够输入一件商品的信息和输出这件商品的信息。商品的信息由编号、商品名和价格。假如商品类Merchandise的框架如下:class merchandise{ public: Merchandiss(); ~Merchandiss(); friend istream& operator>>(istream& in,Merchandiss& s); friend ostream&operator<<(ostream& out,Merchandiss& s); private: int no; char *name; double price; }; 要求实现该类,并编写以下的main函数对该类进行操作。 int main() { Merchandise mer; cin>>mer; cout< return 0; } 4.编写一个程序,将两个文本文件连接成一个文件,然后将此文件中所有小写字母转换成大写字母,并打印出来。 《面向对象程序设计C++》期末考试试卷(B) 一、单项选择题(每小题2分,共40分) 1、关于C++与C语言关系的描述中,()是错误的。 A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的 C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的 2、已知:int m=10; 下列表示引用的方法中,()是正确的。 A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m; 3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*'); 下面函数调用中,不合法的是()。 A.testDefaulParam(5); B.testDefaulParam(5,8); C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*'); 4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是()。 A.函数的返回值类型B.参数的类型C.函数名称D.参数个数 5、下列有关C++类的说法中,不正确的是()。 A.类是一种用户自定义的数据类型 B.只有类中的成员函数或类的友元函数才能存取类中的私有成员 C.在类中,如果不做特别说明,所有成员的访问权限均为私有的 D.在类中,如果不做特别说明,所有成员的访问权限均为公用的 6、已知X类,则当程序执行到语句X array[3];时,调用了()次构造函数。 A.0 B.1 C.2 D.3 7、有关析构函数的说法,不正确的是()。 A.析构函数有且仅有一个 B.析构函数和构造函数一样可以有形参 C.析构函数的功能是在系统释放对象之前作一些内存清理工作 D.析构函数无任何函数类型 一、填空题(每空1分,共14分) 1、观看以下程序: class point{ public: void show() {cout<<”point”< (A)指针(B)引用(C)枚举(D)结构 3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。 (A)share (B)public (C)private (D)protected 4、关于构造函数,下列说法不正确的是()。 (A)构造函数名字和类名相同 (B)构造函数在创建对象时自动执行 (C)构造函数无任何函数返回类型 (D)构造函数有且只有一个 5、派生类可以访问其基类的()。 (A)公有成员(B)保护成员 (C)私有派生(D)公有和保护成员 6、下列关于运算符重载的描述中,错误的是()。 (A)运算符重载不可以改变操作数的个数 (B)运算符重载不可以改变运算符的功能 (C)运算符重载不可以改变结合方向 (D)运算符重载不可以改变运算优先级 7、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是() (A)面向过程(B)面向对象(C)安全性(D)复用性 8、对于类中定义的成员,其隐含访问权限为()。 A.public B.protected C.private D.static 9、下面有关重载函数的说法中正确的是() (A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同; (C)重载函数必须有不同的形参列表(D)重载函数名可以不同; 10、有如下的对类“CSample”的说明,其中()是错误的。 class CSample { A.int a=23; B.CSample(); public: C.CSample(int val); D.~ CSample(); 11、在int a=3,int *p=&a;中,*p的值是( ) A.变量a的地址值 B.无意义 C.变量p的地址值 D.3 12、每个类()构造函数。 (A)只能有一个(B)只可有公有的 C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。 3算法描述流程图 4源程序 #include for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。 1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。 实验1 C程序运行环境、数据类型、运算符和表达式 一、实验目的 1. 掌握Turbo C集成环境的进入与退出、Turbo C集成环境各种窗口的切换,了解Turbo C集成环境的设置。 2. 掌握C语言源程序的建立、编辑、修改、保存及编译和运行等操作。 3. 学会使用C语言的基本运算符(主要是算术运算符、赋值运算符)及其表达式。 4. 掌握C语言源程序的结构特点与书写规范。 二、实验要求 1. 根据题目要求,进行各种程序测试与验证,并记录结果。 2. 上机调试程序。按各个程序输入计算机,并进行编译和连接,如果在编译、连接中有错误信息,则要根 据这些信息找到程序中的错误所在,然后修改程序,直至正确。 3. 详细记录数据的输入、输出信息,按要求写出实验报告。 三、实验内容 1. 开机;进入Turbo C集成工作环境,了解Turbo C集成工作环境及其菜单的使用,输入如下C语言源程序,并以exl.C存盘。 / *ex1.c* / #include 《面向对象程序设计C 》期末试卷及标准答案
c面向对象程序设计试题和答案(经典题目)
C语言程序设计实验报告(数组)
什么是面向对象程序设计
C程序设计实验报告
《面向对象程序设计》答案