C++程序设计实验报告
本实验报告旨在帮助大学生更好地理解和掌握C++程序设计语言的基本概念和编程技巧,特别是构造函数、析构函数、拷贝构造函数和this指针的使用。
实验目的
1. 理解掌握this指针的作用和用法
2. 理解掌握构造函数的定义和作用
3. 掌握构造函数的使用
4. 理解掌握拷贝构造函数的定义和使用
5. 理解掌握构造函数的重载
6. 理解掌握析构函数的定义和使用
实验内容
### 3.2.1 程序阅读
问题一:以上程序编译能通过吗?试解释该程序?
答案:编译能够通过,但是set函数里面的赋值有误,自己赋给自己。
问题二:以上程序的运行结构是否正确,如果不正确,试分析为什么,应该如何改正?
答案:不正确,set函数里面的变量名称和形参名称一样,需要this->x = x;this->y = y;。
### 3.2.2 程序设计
设计实现一个 CPoint 类
要求:
a.该类包含两个整型成员变量 x(横坐标)和 y(纵坐标),以及一个输出函数 Print()用来输出横坐标和纵坐标,要求不可以在类的外部直接访问成员变量;
b.可以采用没有参数的构造函数初始化对象,此时的成员变量采用默认值 0;
c.可以采用直接输入参数的方式来初始化该类的成员变量;
d.可以采用其它的 CPoint 对象来初始化该类的成员变量;
e.设计一个主函数来测试以上功能。
代码:
```cpp
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
class CPoint{
private:
ll x,y;
public:
CPoint(ll x=0,ll y=0):x(x),y(y){}
void Print(){
cout<<"x="<<x<<", y="<<y<<'\n';
}
};
int main(){
CPoint cp1;//默认值
CPoint cp2(1,1);//赋值传参
CPoint cp3(2,2);// 其他对象声明
CPoint cp4 = cp3;
cp1.Print();
cp2.Print();
cp4.Print();
return 0;
}
```
### 3.3 思考题
设计一个 CStudent(学生)类
要求:
a.该类具有学生姓名、学号、程序设计、信号处理、数据结构五门课程的成绩;
b.学生全部信息由键盘输入,以提高程序的适应性;
c.通过成员函数统计学生平均成绩,当课程数量增加时,成员函数无须修改仍可以求取平均成绩;
d.输出学生的基本信息、各科成绩与平均成绩;
e.学生对象的定义采用对象数组实现;
f.统计不及格学生人数。
代码:
```cpp
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
class CStudent{
private:
string name,stu_num;
int cur = 3;
string subjects[10]={"程序设计","信号处理","数据结构"};
ll scores[10];
public:
void input(){
cout<<"输入姓名和学号:\n";
cin>>this->name>>this->stu_num;
cout<<"请分别输入各科目的成绩\n";
for(int i=0;i<this->cur;i++){
cout<<subjects[i]<<":";
int temp;
cin>>temp;
scores[i] = temp;
}
}
double get_ave(){
double sum = 0;
for(int i=0;i<cur;i++)
sum+=scores[i];
return sum/cur;
}
void print(){
cout<<"姓名:"<<name<<endl;
cout<<"学号:"<<stu_num<<endl;
cout<<"成绩:";
for(int i=0;i<cur;i++)
cout<<subjects[i]<<":"<<scores[i]<<" ";
cout<<endl;
cout<<"平均成绩:"<<get_ave()<<endl;
}
};
```
总结:
通过本实验,我们学习了C++程序设计语言的基本概念和编程技巧,包括构造函数、析构函数、拷贝构造函数和this指针的使用。此外,我们还设计了一个CPoint类和一个CStudent类,学习了类的设计和实现。
评论0