C++ 实验作业七


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

Failed to load comments

Last Updated: 5/16/2020, 1:31:52 PM