第五周任务四(学生类数组并应用指针)

 (程序头部注释开始)  
* 程序的版权和版本声明部分  
* Copyright (c) 2011, 烟台大学计算机学院学生  
 * All rights reserved.  
* 文件名称: 学生类数组  
* 作 者: 冯珍珍  
* 完成日期: 2012年3月25日  
* 版 本 号:   
* 对任务及求解方法的描述部分  
* 输入描述:   
* 问题描述:设计一个学生类,包括学号(num)和成绩(score)。建立一个对象数组,内放5个学生的数据,要求:

(1)用指针指向数组首元素,输出第1、3、5个学生的信息;

(2)设计一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号
   
* 程序输出:   
* 程序头部的注释结束*/  


#include<iostream>   
using namespace std;  
class student  //定义一个学生类
{  
private:  
    long num;  
    double score;  
public:  
    student(long n,double s):num(n),score(s){};  //声明一个带参的构造函数
    void display();       //输入学生分数函数
    int max(student *arr); // 最高分的学生学号
    int max_score(); //最高分
	double get_score(){return score;} //输出分数
    long get_num(){return num;}  //输出学号
   
};   

void student::display ()  //定义输出学生信息函数
{  
    cout<<"学号为:"<<num<<"的学生分数为:"<<score<<endl;  
}  
int max(student *arr)  // arr在接受一个数组地址后可作为一个数组访问
{    
    float max_score=arr[0].get_score();    
    int k=0;    
    for(int i=1;i<5;i++)    
		if(arr[i].get_score()>max_score)     
		{    
			max_score=arr[i].get_score();   
			k=i;    
		}    
		return arr[k].get_num();  
}  
int max_score(student *arr)  
{  
	float max_score=arr[0].get_score();    
    int k=0;    
    for(int i=1;i<5;i++)    
		if(arr[i].get_score()>max_score)     
		{    
			max_score=arr[i].get_score();   
			k=i;    
		}    
		return arr[k].get_score();  
}
int main()  
{  
	student stud[5]={    //定义student类的数组变量并初始化
        student(1001,87),  
            student(1002,92),  
            student(1003,88),  
            student(1004,90),  
            student(1005,98)  
    };  
   
     //输出第1、3、5个学生的信息   
       for(int i=0;i<5;i+=2)  
       {  
           cout<<"学生"<<i+1<<": ";  
           stud.display();   
       }  
       //找出个学生中成绩最高者,并输出其学号   
       cout<<"5个学生中成绩最高者的学号为: "<<max(stud);//调用中,实际参数是数组名,传递给形式参数arr的是数组的首地址   
   
       system("pause");  
       return 0;  

	
    
}  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值