实验题目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分
1 人评分
简单编码 (C++代码)(这里推荐用switch)浏览:959 |
C语言训练-排序问题<2> (C++代码)浏览:880 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:654 |
IP判断 (C语言代码)浏览:761 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:567 |
Hello, world! (C语言代码)浏览:821 |
勾股数 (C语言代码)浏览:799 |
1231题解(注意理解“输入多个测试实例”)浏览:785 |
简单的a+b (C语言代码)浏览:580 |
C二级辅导-分段函数 (C语言代码)浏览:739 |