/* (程序头部注释开始)
* 程序的版权和版本声明部分
* 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;
}
运行结果:
经验积累:一开始对对象指针不理解,可能是课本看的太少了,于是又浏览了一边,但做起来还是不太顺手,
没办法只能参考一下别人的答案然后才勉强做出来,看来自己还要下功夫,程序中有些是别人的注释,自己
也加了一些注释,以方便自己的理解,总体来说,除了对象指针不太懂,其余的已没有大问题,这两天重点
看一下指针部分吧。。。。。