实验题目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;

 }





图片1.png

实验题目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;

}   

图片2.png

#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;


}

6NP3[C]_94KT]_F8GATE%XB.png

点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论