| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 840 人关注过本帖
标题:关于一个C++中查找最大值的问题
只看楼主 加入收藏
赤壁男儿
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2009-12-26
结帖率:66.67%
收藏
已结贴  问题点数:3 回复次数:2 
关于一个C++中查找最大值的问题
#include<iostream>
using namespace std;
class Student
{
public:
    int num;
    int score;
    Student(int a,int b):num(a),score(b){}
    void Max(Student *p)
    {
        int max=p->score;
        Student *h=p;
        h++;
        for(int i=0;i<5;i++)
        {
            if(i==4)
                cout<<h->score<<endl;
            if(max<h->score)
                max=h->score;
            h++;
        }
        cout<<max<<endl;
        for(i=0;i<5;i++)
        {
            if(max==p->score)
                cout<<p->num<<endl;
        }
    }
};
int main()
{
    Student a[5]={Student(23,34),Student(23,54),Student(42,34),Student(42,45),Student(45,23)};
    Student *q;
    q=a;
    for(int i=0;i<5;i++)
    {
        cout<<q->num<<" "<<q->score<<endl;
        q++;
    }
    q->Max(a);
    return 0;
}
这个程序不知道哪里出错了,最后数的最大值竟是一个地址?请各位高手指教。
搜索更多相关主题的帖子: 最大值 
2010-06-27 16:20
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:2 
for(int i=0;i<5;i++)
    {
        cout<<q->num<<" "<<q->score<<endl;
        q++;
    }
//你想想在什么情况下会从for这个循环体里出来
    q->Max(a);//越界行为

迭代的是人,递归的是神。
2010-06-27 16:48
方廷
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:47
专家分:176
注 册:2010-6-9
收藏
得分:2 
#include<iostream>
using namespace std;
class Student
{
public:
    int num;
    int score;
    Student(int a,int b):num(a),score(b){}
    void Max(Student *p)
    {
        int max=p->score;
        Student *h=p;
        h++;
        for(int i=0;i<4;i++)//五个数只比较四次就行了
        {
            if(max<h->score)
                max=h->score;
            h++;
        }
        cout<<"max="<<max<<endl;
        for(i=0;i<5;i++)
        {
            if(max==p->score)
                cout<<"number:"<<p->num<<endl;
            p++;
        }
    }
};
int main()
{
    Student a[5]={Student(23,34),Student(23,54),Student(42,34),Student(42,45),Student(45,23)};
    Student *q;
    q=a;
    for(int i=0;i<5;i++)
    {
        cout<<q->num<<" "<<q->score<<endl;
        q++;
    }
    q->Max(a);
    return 0;
}
2010-06-27 20:24
快速回复:关于一个C++中查找最大值的问题
数据加载中...
 
   



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

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