C++ 实验作业七
Andy 2020-05-01
作业笔记
cpp
注意
1.以下代码仅供参考,不代表最优解。
2.代码的运行结果与编译环境有关,以下代码均通本地测试,如果代码存在无法编译或输出异常,请检查运行环境。
3.如果发现问题或者您有更优的解,欢迎在文章底部留言交流。
# 2、 分析下面的程序,写出输出结果。
#include <iostream>
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;
}
Date d1(10, 13, 2005);
Date d2(12, 30);
Date d3(10);
Date d4;
d1.display(); // 10/13/2005
d2.display(); // 12/30/2005
d3.display(); // 1/10/2005
d4.display(); // 1/1/2005
# 3、如果将上题中程序的第 5 行改为用默认参数...
如果将上题中程序的第 5 行改为用默认参数,即
Date(int=1,int=1,int=2005);
分析程序有无问题。上机编绎,分析出错信息,修改程序使之能通过编绎。要求保留上面一行给出的构造函数,同时输出与第 2 题程序相同的输出结果。
// 修改前
Date d1(10, 13, 2005);
Date d2(12, 30); //编译出错,有歧义
Date d3(10); //编译出错,有歧义
Date d4; //编译出错,有歧义
d1.display();
d2.display();
d3.display();
d4.display();
// 修改后的代码
#include <iostream>
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, 30);
Date d3(10);
Date d4;
d1.display(); // 10/13/2005
d2.display(); // 12/30/2005
d3.display(); // 1/10/2005
d4.display(); // 1/1/2005
return 0;
}
# 4、建立一个对象数组,内放 5 个学生的数据...
建立一个对象数组,内放 5 个学生的数据(学号、姓名、成绩),用指针指向数组首元素,输出第 1,3,5 个学生的数据。
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
class Student
{
int num;
string name;
int grade;
public:
Student(int num, string name, int grade) : num(num), name(name), grade(grade){};
void display()
{
cout << num << " " << name << " " << grade << endl;
}
};
int main()
{
Student *p;
Student std[5] = {
Student(1001, "Tom", 98),
Student(1002, "Jerry", 88),
Student(1003, "Daming", 78),
Student(1004, "Lingling", 68),
Student(1005, "Sam", 58),
};
p = &std[0];
p->display();
p = p + 2;
p->display();
p = p + 2;
p->display();
return 0;
}
# 5、建立一个对象数组,内放 5 个学生的数据...在 max 函数...
建立一个对象数组,内放 5 个学生的数据(学号、姓名、成绩),设立一个函数 max,用指向对象的指针作函数参数,在 max 函数中找出 5 个学生中成绩最高者,并输出其相关数据。
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
class Student
{
int num;
string name;
int grade;
public:
Student(int num, string name, int grade) : num(num), name(name), grade(grade){};
void display()
{
cout << num << " " << name << " " << grade << endl;
}
int getGrade()
{
return grade;
}
};
void max(Student *std)
{
int maxIndex = 0;
for (int i = 0; i < 5; i++)
{
if (std[i].getGrade() > std[maxIndex].getGrade())
maxIndex = i;
}
std[maxIndex].display();
}
int main()
{
Student std[5] = {
Student(1001, "Tom", 98),
Student(1002, "Jerry", 88),
Student(1003, "Daming", 78),
Student(1004, "Lingling", 68),
Student(1005, "Sam", 58),
};
max(std);
return 0;
}
# 评论交流
最后,如果你觉得笔记对你有帮助,不妨赞赏一杯可乐😅
Andy QQ 1739046583
QQ 交流群 217394861