2、已知某个学习小组三门课程的成绩如下: 学生1 学生2 学生3 英语 85 65 75 高等数学 90 70 85 C++程序设计 80 75 77 使用二维数组存放该学习小组三门课程的成绩,计算每个学生的平均成绩和该小组每门课程的平均成绩。 思考并验证:
(1)如何定义二维数组,用什么方法给数组赋值?
(2)如何用指针实现
(3)设计一个算法实现对英语成绩的排序,使得成绩高的学生成绩放在数组的首位。
3、写一个函数,可以根据输入的参数值建立不同长度的动态数组,并置全部元素初始值为0。如果要求在已生成的动态数组上添加元素,以致需要扩充数组时,应该如何操作?请编程序试一试。
4.(选做)数据排序是为了快速查找。定义一个函数,在有序数组中查找指定值,想一想怎样才能找得更快。
第 11 页
姓名 班级 学号 文件名:班级号_学号_姓名_题号.cpp(多文件应压缩为rar文件)
实验4 指针的应用(15学时) 实验目的
(1) 掌握指针的用法
(2) 掌握单向链表的基本操作方法,包括建立和遍历链表,在链表中插入和删除节点。 实验内容
1、建立一个单向链表,该链表中每个节点是一个整型数,编写三个函数完成以下各项工作:
① 显示链表中每个节点数据;
② 输入一个整数i,在第i个节点之后插入一个节点,若i大于节点总数,则在链
表的尾部插入一个节点; ③ 输入某个整数,删除该相应节点。
思考并验证
(1)写出三个函数原型,并说明其功能
(2)采用动态内存分配方法,若不及时释放空间会出现什么情况
(3)你在调试本程序时常出现哪些问题,原因何在?
(4)总结在使用指针时应该注意哪些问题
2、分别把两个字符串存放到两个字符数组中,将其中一个字符串插入到另一个字符串的指定位置。要求用指针实现
第 12 页
姓名 班级 学号 文件名:班级号_学号_姓名_题号.cpp(多文件应压缩为rar文件)
实验5 类与对象(15学时) 实验目的
(1) 掌握类和对象的概念、定义和使用方法。
(2) 掌握不同特性对象成员的访问方法,以及this指针的概念和使用方法。 (3) 掌握构造函数和析构函数的使用方法。 (4) 掌握静态成员的使用方法。 (5) 掌握友员的使用方法。
学会使用VC6的Debug功能跟踪构造函数、析构函数和成员函数的执行顺序。 实验内容
1、定义一个score类,其中包括私有数据成员和公有成员函数,即 num 学号 Math 高等数学成绩 English 英语成绩 Programming 程序设计成绩
inscore( ) 输入学号和各科成绩,并且计算平均成绩 showscore( ) 输出学号和各科成绩
使用score类,输入某班n (事先不能确定)个学生的学号和各科成绩,然后求各个学生的平均成绩,并列表输出学生的学号、各科成绩和平均成绩。 思考并验证:
(1) 定义什么结构表示n个学生?
(2) 用什么方法输入n个学生的学号和成绩?
(3) 你的类中定义了几个构造函数,写出原型并说明其功能
第 13 页
(4) 在类中定义一个静态成员,用于表示类中所有对象的个数。当一个对象创建时,对象个数增1,当一个对象被撤销时,对象个数减1。说明如何定义静态成员,如何统计对象的个数。
2、 建立一个复数类imaginary,其私有数据成员x和y表示复数的实部和虚部,构造函数imaginary用于对复数的实部和虚部初始化,成员函数show用于显示复述对象,形式为“实部+虚部i”;友员函数add,sub,mul和div分别用于进行复数的加、减、乘和除法运算。在主函数中,实例化两个复数,并输入一个运算符,按运算符选择相应的友员函数进行复数运算,然后调用成员函数show输出计算结果。 思考并验证:
(1) 四个友员函数的形参和返回值分别是什么?
(2) 四个友员函数可以定义为相应的成员函数吗,写出原型
(3) 比较友员函数与成员函数的用法
第 14 页
姓名 班级 学号 文件名:班级号_学号_姓名_题号.cpp(多文件应压缩为rar文件)
实验6 运算符重载(9学时) 实验目的
(1)理解重载运算符的意义。
(2)掌握用成员函数、友员函数重载运算符的特点。 (3)掌握重载运算符函数的调用方法。 实验内容
1、建立一个二维数组类Douary,使该类中有以下数据成员、成员函数及友员函数。
构造函数:Douary(int m, int n);用于建立一维动态数组存放m行n列的二维数组元素,并对该数组的边界进行检查和将该数组元素初始化为0。
析构函数:~Douary();用于释放动态数组所占用的存储空间。 友员函数:friend istream &operator>>(istream &input, Douary &d); 重载运算符“>>”输入二维数组,基中d为Dousry类对象;
friend ostream &operator<<(ostream &output, Douary &d);
重载运算符“<<”以矩阵的形式输出二维数组,其中 d为Douary类对象。
私有数据成员:
int * Array; Array 为动态数组指针。 int row; row 为二维数组的行数。 int col; col 为二维数组的列数。
在主函数中,实例化一个二维数组,然后测试Douary类。 思考并验证:
(1) 二维数组类中的构造函数和析构函数是必须的吗?如果不定义构造函数和析构函数会出现什
么情况?
(2) 构造函数中对数组的边界检查包括哪些方面?
第 15 页