实验题目1
【构造函数的重载】分析如下程序,给出运行输出结果。(请先分析,之后上机运行。)
#include
using namespace std;
class Date
{public:
Date(int,int,int);
Date(int,int);
Date(int);
Date();
void display();
private:
int month;
int day;
int year;
};
Date::Date(int m,int d,int y):month(m),day(d),year(y)
{ }
Date::Date(int m,int d):month(m),day(d)
{year=2005;}
Date::Date(int m):month(m)
{day=1;
year=2005;
}
Date::Date()
{month=1;
day=1;
year=2005;
}
void Date::display()
{cout<<month<<"/"<<day<<"/"<<year<<endl;}
int main()
{
Date d1(10,13,2005);
Date d2(12,30);
Date d3(10);
Date d4;
d1.display();
d2.display();
d3.display();
d4.display();
return 0;
}
实验题目2
【带默认参数的构造函数】上机运行如下程序有错误,现要得到如下输出结果,请修改程序。(注意:请保持程序中的蓝色一行不动。)
要得到的输出结果如下:
10/13/2005
12/13/2005
10/1/2005
1/1/2005
#include
using namespace std;
class Date
{public:
Date(int=1,int=1,int=2005);//修改程序时,保留本行不动!!!
Date(int,int);
Date(int);
Date();
void display();
private:
int month;
int day;
int year;
};
Date::Date(int m,int d,int y):month(m),day(d),year(y)
{ }
Date::Date(int m,int d):month(m),day(d)
{year=2005;}
Date::Date(int m):month(m)
{day=1;
year=2005;
}
Date::Date()
{month=1;
day=1;
year=2005;
}
void Date::display()
{cout<<month<<"/"<<day<<"/"<<year<<endl;}
int main()
{
Date d1(10,13,2005);
Date d2(12,30);
Date d3(10);
Date d4;
d1.display();
d2.display();
d3.display();
d4.display();
return 0;
}
此处错误由构造函数定义的歧义所引起 实际上只需载用一个带默认参数的构造函数进行初始化即可
#include
using namespace std;
class Date
{public:
Date(int=1,int=1,int=2005);//修改程序时,保留本行不动!!!
void display();
private:
int month;
int day;
int year;
};
Date::Date(int m,int d,int y):month(m),day(d),year(y)
{ }
void Date::display()
{cout<<month<<"/"<<day<<"/"<<year<<endl;}
int main()
{
Date d1(10,13,2005);
Date d2(12,13,2005);
Date d3(10,1,2005);
Date d4(1,1,2005);
d1.display();
d2.display();
d3.display();
d4.display();
return 0;
}
实验题目3
【用参数初始化表对数据成员初始化】阅读下面程序,分析其执行过程,写出输出结果(先分析再上机验证);将构造函数改写为“用参数初始化表对数据成员初始化”的实现形式。
#include
using namespace std;
class Student
{public:
Student(int n,float s)
{
num=n;
score=s;
}
void change(int n,float s) {num=n;score=s;}
void display(){cout<<num<<" "<<score<<endl;}
private:
int num;
float score;
};
int main()
{Student stud(101,78.5);
stud.display();
stud.change(101,80.5);
stud.display();
return 0;
}
#include
using namespace std;
class Student
{public:
Student(int x,float y):num(x),score(y){}//定义一个有参的构造函数并使用初始化表队数据成员初始化
void change(int n,float s) {num=n;score=s;}
void display(){cout<<num<<" "<<score<<endl;}
private:
int num;
float score;
};
int main()
{Student stud(101,78.5);
stud.display();
stud.change(101,80.5);
stud.display();
return 0;
}
实验题目4
【对象数组和对象指针的使用】建立一个对象数组,内放5个学生数据(学号(字符串类型)、成绩(整型)),用指针指向数组首元素,输出第1,3,5个学生的数据。
程序源代码
#include <iostream>
using namespace std;
class Student
{
public:
Student(int n=0, float s=0): num(n), score(s){}
void input();
void display();
private:
int num;
float score;
};
void Student::input()
{
cin>>num>>score;
}
void Student::display()
{
cout<<num<<' '<<score<<endl;
}
int main()
{
Student stu[5], *p;
int i;
for (i=0; i<5; i++){
cout<<"Pleas enter No."<<i+1<<" student info: ";
stu[i].input();
}
for (p=stu; p<stu+5; p+=2){
p->display();
cout<<endl;
}
system("pause");
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复