Seemyeyes7 2019-12-24 15:40 采纳率: 50%
浏览 171
已采纳

麻烦大佬帮忙看一下我的代码哪里出了问题,关于对象数组和指针的!!

建立一个对象数组,内放五个学生的数据(学号、成绩)。设立一个函数max,使用对象指针作为函数参数,在max函数中找出5个学生成绩最高者,并输出其学号。要求采用多文件结构实现。

//student.h
class student
{
public:
    student(int number=0,int scores=0);
    void input();
    void show();
    int max(student stu[],int i);
private:
    int number;
    int scores;
};


//student.cpp
#include"student.h"
#include<iostream>
using namespace std;
student::student(int number,int scores)
{
    this->number=number;
    this->scores=scores;
}

void student::input()
{
    cin>>number>>scores;
}

void student::show()
{
    cout<<"the hightest scores is"<<&student::max<<endl;
}

int student::max(student stu[],int i)
{   int max;
    student *p;
    for(i=0;i<5;i++)
    {
        p[i].scores<p[i+1].scores;
            max=p[i+1].scores;
    }
    return max;
}
//main.cpp
#include<iostream>
#include"student.h"
using namespace std;
int main()
{
    student stu[5];
    student *st;
    int i;
    for(i=0;i<5;i++){
        cout<<"请输入第"<<i+1<<"号学生的信息"<<endl;
        stu[i].input();
    }
    st->max(stu,5);
    system ("pause");
    return 0;
}


麻烦大佬讲解出问题的愿意和需要怎么修改,谢谢!

  • 写回答

2条回答

  • bobhuang 2019-12-24 16:01
    关注

    1.这里max是函数,而不是成员变量。

    void student::show()
    {
        cout<<"the hightest scores is"<<&student::max<<endl;
    }
    

    2.这里,函数名max和局部变量max重名了,要改掉一个。
    3.max计算的不是最大值,与题意不符。
    4.p没有初始化,要加上p = &stu[0]

    int student::max(student stu[],int i)
    {   int max;
        student *p;
        for(i=0;i<5;i++)
        {
            p[i].scores<p[i+1].scores;
                max=p[i+1].scores;
        }
        return max;
    }
    

    改成

    int student::max(student stu[],int n)
    {   int maxs = 0;
        int maxn = 0;
            int i;
        student *p = &stu[0];
        for(i=0;i<n;i++)
        {
                if (p[i].scores > max) {
                      maxs = p[i].scores;
                        maxn = p[i].number;
                    }
        }
        return maxn;
    }
    

    5.最后,输出漏了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?