标题:建立一个对象数组,内放5学生数据(学号,成绩,由用户输入)设立函数max用 ...
只看楼主
唐兵
Rank: 2
来 自:四川泸州合江
等 级:论坛游民
帖 子:150
专家分:12
注 册:2012-12-1
结帖率:82.05%
已结贴  问题点数:10 回复次数:8 
建立一个对象数组,内放5学生数据(学号,成绩,由用户输入)设立函数max用指向对象的指针做函数参数,在max中找出成绩最高的,并输出学号
#include <iostream>
using namespace std;
class A
{
public:
    A(int g, int n):grade(g),number(n){}
    void get()
    {
        cin>>grade>>number;
    }
    int grade;//这里如果改为private,程序该怎样改呢
    int number;//
   
};
void max(A *s)
{
    int x;
    int i;//为什么main里定义了这里还要定义呢?
    int q;//
    x=s[0].grade;
    for(i=0;i<5;i++)
    {
        if(x<s[i+1].grade)
        {
            x=s[+1].grade;
        q=i;
        }
    }


}
int main()
{
   
   
    int i;
    int q=0;
    A stud[5]={
    A(1,1),A(2,4),A(4,5),A(9,7),A(2,3)};//这里必须对stud初始化吗?我不想对它赋值。有没有简便点的方法
    for(i=0;i<5;i++)
    {
        cout<<"please  stud's grade and number"<<endl;
    stud[i].get();
    }
    void max(A *);
    A *pt=stud;
    max(pt);
    cout<<stud[q].number;
        return 0;
}
搜索更多相关主题的帖子: max void private include public 
2013-03-26 12:44
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:3 
int i;//为什么main里定义了这里还要定义呢?

去看变量作用域

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-26 13:59
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:0 
A(1,1),A(2,4),A(4,5),A(9,7),A(2,3)};//这里必须对stud初始化吗?我不想对它赋值。有没有简便点的方法

不赋值,怎么排序?
况且,不是你自己写的构造函数吗?
A(int g, int n):grade(g),number(n){}

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-26 14:00
唐兵
Rank: 2
来 自:四川泸州合江
等 级:论坛游民
帖 子:150
专家分:12
注 册:2012-12-1
得分:0 
回复 3楼 peach5460
我想问有没有简单的初始方法

一个人如果不比自己一把,你永远不知道自己究竟有多厉害
2013-03-27 12:31
唐兵
Rank: 2
来 自:四川泸州合江
等 级:论坛游民
帖 子:150
专家分:12
注 册:2012-12-1
得分:0 
回复 2楼 peach5460
主函数里定义的不是全局变量吗

一个人如果不比自己一把,你永远不知道自己究竟有多厉害
2013-03-27 12:32
shmilyflf
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:356
专家分:1008
注 册:2012-12-9
得分:7 
#include <iostream>
using namespace std;
//int i;//这样就是全局的了,不过在这里定义了你在函数里面就不要定义了,否则会覆盖这个
class A
{
public:
    A()
    {}
    A(int g, int n):grade(g),number(n){}
    void get()
    {
        cin>>grade>>number;
    }
    int GetGrade()//增加两个函数分别得到grade和number
    { return grade; }//这里我为了方便就直接在这里写了,和C#属性的用法类似
    int GetNumber()
    { return number; }

private:
    int grade;//这里如果改为private,程序该怎样改呢
    int number;//
};
void max(A *s,int &q)//参数加一个,你要返回q得值,把q设为&(引用)或者指针都行,要是值类型是不可以的。
{
    int x;
    int i;//为什么main里定义了这里还要定义呢?
    //变量的作用域你真是该好好看看,主函数里面定义的是主函数的,在别的函数里面是不能使用的
    //你可以在主函数,就是在所有函数外面定义就是全局的了。
    //int q;//
    x=s[0].GetGrade();
    q=0;//如果第0个成绩是最大的
    for(i=1;i<5;i++)
    {
        if(x<s[i].GetGrade())
        {
            x=s[i].GetGrade();//这里我情愿相信你是复制代码的时候复制错了
            q=i;//你这个q如何传出去????
        }
    }
}
int main()
{
    int i;//你还是好好看看变量的作用域吧
    int q;
    //A stud[5]={A(1,1),A(2,4),A(4,5),A(9,7),A(2,3)};//这里必须对stud初始化吗?我不想对它赋值。有没有简便点的方法
    A stud[5];//你想省事就要给类A加一个无参的构造函数!!!当你自己写了一个有参构造函数后,C++是不会为你提供无参构造函数的!!!
    for(i=0;i<5;i++)
    {
        cout<<"please stud's grade and number"<<endl;
        stud[i].get();
    }
    void max(A *,int &);
    A *pt=stud;
    max(pt,q);
    cout<<stud[q].GetNumber()<<endl;
    return 0;
}
2013-03-27 14:54
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:0 
以下是引用唐兵在2013-3-27 12:32:36的发言:

主函数里定义的不是全局变量吗

去看看书,什么叫全局变量...

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-27 15:40
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:0 
以下是引用唐兵在2013-3-27 12:31:46的发言:

我想问有没有简单的初始方法

没有

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-27 15:41
唐兵
Rank: 2
来 自:四川泸州合江
等 级:论坛游民
帖 子:150
专家分:12
注 册:2012-12-1
得分:0 
回复 6楼 shmilyflf
感激不尽,谢谢谢谢。。。。

一个人如果不比自己一把,你永远不知道自己究竟有多厉害
2013-03-29 15:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-401945-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.094091 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved