第四周 项目四-指向学生类的的指针

/*
*Copyright (c)2014,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:   .cpp
*作    者: 冷基栋
*完成日期:2014年3月29日
*版 本 号:v1.0
*/

问题

设计一个学生类Student,数据成员包括学号(num)和成绩(score),成员函数根据需要自行设计(建议配备需要的set、get函数,以及必要的输入或输出,给出的代码中也可以找到需要成员函数的线索)。在main函数中,要做到:

  • 建立一个对象数组,通过初始化,设置5个学生的数据,要求:
  • 用指针指向数组首元素,输出第1、3、5个学生的信息;
  • 设计一个函数int max(Student *arr);,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并返回值其学号。

下面给出部分程序,在此基础上完成项目:

class Student
{
public:
    ……
private:
    int num;   //学号
    double score;   //成绩
};

//max函数返回arr指向的对象数组中的最高成绩(max并不是成员函数,而是普通函数)
int max(Student *arr);

int main()
{
    Student stud[5]=
    {
        Student(101,78.5),Student(102,85.5),Student(103,100),
        Student(104,98.5),Student(105,95.5)
    };
    //输出第1、3、5个学生的信息(用循环语句)
    ……
    //输出成绩最高者的学号
    cout<<"5个学生中成绩最高者的学号为: "<<max(stud);//调用函数显示最高成绩
    return 0;
}

//定义函数max,返回arr指向的对象数组中的最高成绩,返回值为最高成绩者的学号
int max(Student *arr)
{
//求最高成绩及对应同学的学号

//返回最高成绩者的学号   

}

代码

#include <iostream>
#include <cmath>
using namespace std;

class Student
{
public:
    Student(int n,double s):num(n),score(s) {}
    void display();
    int getNum()
    {
        return num;
    }
    double getScore()
    {
        return score;
    }
private:
    int num;   //学号
    double score;   //成绩
};

void Student::display()
{
    cout<<num<<" "<<score<<endl;
}

//max函数返回arr指向的对象数组中的最高成绩
double max(Student *arr);

int main()
{
    Student stud[5]=
    {
        Student(101,78.5),Student(102,85.5),Student(103,99),
        Student(104,98.5),Student(105,99)
    };

    //输出第1、3、5个学生的信息
    for(int i=0; i<5; i+=2)
    {
        cout<<"学生"<<i+1<<": ";
        stud[i].display();
    }
    //找出个学生中成绩最高者,并输出其学号
    double max_score = max(stud); //调用函数求最高成绩
    cout<<"5个学生中成绩最高者的学号为: ";
    for(int i=0; i<5; i++)
    {
        if(abs(stud[i].getScore() - max_score)<1e-7)  //浮点数不能直接比较相等,只要相减小于一个很小的值,就认为相等
            cout<<stud[i].getNum()<<"  ";
    }
    cout<<endl;
    return 0;
}

//定义函数max,返回arr指向的对象数组中的最高成绩
double max(Student *arr)
{
    double max_score=arr[0].getScore();//通过公共的成员函数取出私立有的数据成员,用好此法
    for(int i=1; i<5; i++)
        if(arr[i].getScore()>max_score)
        {
            max_score=arr[i].getScore();
        }
    return max_score;
}

运行结果:

知识点总结:

考虑到最高成绩不止一个人

指向类的指针

学习心得:

好好学习 天天向上

时间: 2024-10-04 22:45:54

第四周 项目四-指向学生类的的指针的相关文章

第四周项目四——指向学生类的指针(1)

设计一个学生类Student,数据成员包括学号(num)和成绩(score),成员函数根据需要自行设计(建议配备需要的set.get函数,以及必要的输入或输出,给出的代码中也可以找到需要成员函数的线索).在main函数中,要做到: 建立一个对象数组,通过初始化,设置5个学生的数据,要求: 用指针指向数组首元素,输出第1.3.5个学生的信息: 设计一个函数int max(Student *arr);,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并返回值其学号. 参考解答:

第四周项目4-指向学生类的指针

设计一个学生类Student,数据成员包括学号(num)和成绩(score),成员函数根据需要自行设计(建议配备需要的set.get函数,以及必要的输入或输出,给出的代码中也可以找到需要成员函数的线索).在main函数中,要做到: 建立一个对象数组,通过初始化,设置5个学生的数据,要求: 用指针指向数组首元素,输出第1.3.5个学生的信息: 设计一个函数int max(Student *arr);,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并返回值其学号 /* #inc

第8周项目3—指向学生类的指针

/* 02. *Copyright (c) 2016,烟台大学计算机学院 03. *All rights reserved. 04. *文件名称:cpp 05. *作    者:孙亚茹 06. *完成日期:2016年4月28日 07. *版 本 号:v1.0 09. *问题描述:用指针指向数组首元素,输出第1,3,5个学生的信息,用指向对象的指针做函数参数,在函数中返回成绩最高者学号. */ #include <iostream> using namespace std; class Stud

第八周项目(4)—指向学生类的指针

/* *copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:hellow.cpp *作者:田甜 *完成日期:2016年5月10日 *版本号:v1.0 * *问题描述:设计一个学生类Student,数据成员包括学号(num)和成绩(score),成员函数根据需要自行设计(建议配备需要的set.get函数,以及必要的输入或输出,给出的代码中也可以找到需要成员函数的线索).在main函数中,要做到: 建立一个对象数组,通过初始化,设置5个学

指向学生类的指针

输入代码: /* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:sum123.cpp *作 者:林海云 完成日期:2015年3月31日 *版 本 号:v2.0 * *问题描述:设计一个学生类Student,数据成员包括学号(num)和成绩(score),成员函数根据需要自行设计(建议配备需要的set.get函数,以及必要的输入或输出,给出的代码中也可以找到需要成员函数的线索).在main函数中,要做到: ?建立一个对象

第四周项目1-三角形类的构造函数

设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化,可以由下面的类声明开始,需要自己实现相关的成员函数,以及增加要求的构造函数. class Triangle { public: double perimeter();//计算三角形的周长 double area();//计算并返回三角形的面积 void showMessage(); private: double a,b,c; //三边为私有成员数据 }; void Triangle::showMessage() { cout<<&

第11周项目2储存班长信息的学生类

/* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称 : *作 者 : 刘云 *完成日期 : 2016年5月8号 *版 本 号 : v6.0 * *问题描述 : 储存班长信息的学生类 *输入描述 : 无 *程序输出 : */ #include<iostream> using namespace std; class Stu //声明基类 { public: Stu(int n, string nam ); //基类构造函数 v

第十四周项目2:用文件保存的学生名单

问题及代码: /* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:project.cpp *作 者:陈文青 *完成日期:2015年6月16日 *版 本 号:v1.0 * *问题描述: (1)定义学生类,其中包含姓名.C++课.高数和英语成绩及总分数据成员. (2)用对象数组进行存储学生的成绩,读入成绩并计算总分:将总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中. *程序输入: *程序输出:

第十四周项目2-用文件保存的学生名单

文件score.dat中保存的是若干名学生的姓名和C++课.高数和英语成绩. (1)定义学生类,其中包含姓名.C++课.高数和英语成绩及总分数据成员. //定义学生类 class Student{ public: //声明必要的成员函数 private: string name; double cpp; double math; double english; double total; static int stu_num; //学生人数,处理为类的静态成员合适 static double t