关闭

5-4 类的应用——学生类

549人阅读 评论(0) 收藏 举报

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作 者:张传新
* 完成日期:2012 年 3月 21 日
* 版 本 号: 1

* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:设计一个学生类,包括学号(num)和成绩(score)。建立一个对象数组,

内放5个学生的数据,要求:
(1) 用指针指向数组首元素,输出第1、3、5个学生的信息;
(2) 设计一个函数max,用指向对象的指针作函数参数,在max函数中找出5个

学生中成绩最高者,并输出其学号。

* 程序输出:
* 程序头部的注释结束
*/

#include<iostream>
using namespace std;
class Student
{
public:
    Student(int n,int s):num(n),score(s){}//声明一个有参数的构造函数,用参数的初始化表对数据成员初始化
	void getmessage();
	int getnum();
	float getscore();
private:
	int num;
	float score;
};

void Student::getmessage()//输出学生信息
{
	cout<<num<<" "<<score<<endl;
}

int max(Student *a)//a在接受数组首地址之后,可以作为一个数组访问   
{  
    float max_score=a[0].getscore();//通过成员函数getscore取出私有的数据成员score的值  
    int j=0;  
    for(int i=1;i<5;i++)  //冒泡法
       if(a[i].getscore()>max_score)   
       {  
           max_score=(*(a+i)).getscore();  //“()”的优先级高于“*”
           j=i;  
       }  
       return a[j].getnum();  
}  

int Student::getnum()
{
	return num;
}

float Student::getscore()
{
	return score;
}
			     

int max(Student *a);

int main()
{
	Student a[5]={
	Student(10001,100),
	Student(10001,88.8),
	Student(10001,96.7),
	Student(10001,97.5),
	Student(10001,99)
	};
	//输出第1,3,5个学生的信息
	for(int i=0;i<5;i+=2)
	{
		cout<<"第"<<i+1<<"个学生的信息是:"<<endl;//注意是第i+1个。。。。
		a[i].getmessage();
	}
	//找出个学生中成绩最高者,并输出其学号   
    cout<<"5个学生中成绩最高者的学号为: "<<endl;
	cout<<max(a)<<endl;                                //传递给形式参数a的是数组的首地址   
    system("PAUSE");  
    return 0;  
}  

运行结果:
	

经验积累:一开始对对象指针不理解,可能是课本看的太少了,于是又浏览了一边,但做起来还是不太顺手,

没办法只能参考一下别人的答案然后才勉强做出来,看来自己还要下功夫,程序中有些是别人的注释,自己

也加了一些注释,以方便自己的理解,总体来说,除了对象指针不太懂,其余的已没有大问题,这两天重点

看一下指针部分吧。。。。。

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:102139次
    • 积分:2001
    • 等级:
    • 排名:第19322名
    • 原创:88篇
    • 转载:0篇
    • 译文:0篇
    • 评论:49条
    最新评论