| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3867 人关注过本帖, 1 人收藏
标题:c++ 初学者,求助,课后习题。
只看楼主 加入收藏
cityrunner
Rank: 2
等 级:论坛游民
帖 子:26
专家分:33
注 册:2016-1-22
结帖率:100%
收藏(1)
已结贴  问题点数:10 回复次数:7 
c++ 初学者,求助,课后习题。
题:建立一个对象数组,内放5个学生的数据(学号,成绩),用指针指向数组的首元素,输出第 1,3,5;个学生的数据,设计一个max 函数,用指向对象的指针变量作为函数参数,函数的功能是找出5个学生中的成绩最高者,并输出其学号及成绩。
程序代码:
#include<iostream>
#include<cstring>
#define maxsize 5;
using namespace std;
class  ST
{
    private:
        int g;
        char num[15];
    public:
        ST(int x,const char *y)
        {
            g=x;
            strcpy(num,y);
        }
    };
        ex(ST *p)
        {
            for(int i=0;i<maxsize;i=i+2)
            cout<<""<<i+1<<"个人的成绩为:"<<s[i]->g<<endl; 
            
        }
        
    void max(ST *s)
    {
        ST temp(s[0]);
        for(int i=0;i<maxsize-1;i++)
        {
            if(s[i]<s[i+1])
            temp=s[i+1];
        }
        cout<<"成绩最高的人的学号是:"<<temp->num<<"其成绩为:"<<g<<endl; 
        
    }
    int main()
    {
        ST s[maxsize];
        s[0]=ST(98,1306060132);
        s[1]=ST(97,1306060131);
        s[2]=ST(96,1306060134);
        s[3]=ST(95,1306060132);
        s[4]=ST(94,1306060129);
        ex(s);
        max(s);
        return 1;
    }

我不太会查看错误,大概逻辑知道些,求前辈给出解答。
搜索更多相关主题的帖子: 元素 
2016-04-14 19:08
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:8 
程序代码:
#include<iostream>
#include<cstring>
#define maxsize 5
using namespace std;
class  ST
{
private:
  int id;
  double score;
public:
  //ST():id(0),score(0){}
  ST(const int x,const double sc):id(x),score(sc)
  {
  }
  friend void ex(const ST *);
  friend void max(const ST *);
  ~ST(){}
};
void ex(const ST *p)
{
   for(int i=0;i<maxsize;i=i+2)
     cout<<""<<i+1<<"个人的id为:"<<p[i].id<<" 成绩为"<<p[i].score<<endl; 
}
void max(const ST *s)
{
  int maxsc=s[0].score;
  int j=0;
  for(int i=0;i<maxsize;i++)
  {
     if(s[i].score>maxsc)
       j=i;
  }
  cout<<"成绩最高的人的学号是:"<<s[j].id<<"其成绩为:"<<s[j].score<<endl; 
}
int main()
{
  ST s[maxsize]={
        ST(98,1306060132),
        ST(97,1306060131),
        ST(96,1306060134),
        ST(95,1306060132),
        ST(94,1306060129)
  };
  ex(s);
  max(s);
  return 0;
}

未佩好剑,转身便已是江湖
2016-04-14 21:22
cityrunner
Rank: 2
等 级:论坛游民
帖 子:26
专家分:33
注 册:2016-1-22
收藏
得分:0 
回复 2楼 alice_usnet
ST s[maxsize];
         s[0]=ST(98,1306060132);
         s[1]=ST(97,1306060131);
         s[2]=ST(96,1306060134);
         s[3]=ST(95,1306060132);
         s[4]=ST(94,1306060129);
      我这条语句有啥问题没?
还有我的 构造函数 有啥问题没? 学号应该也可以当做字符串吧
   ST(int x,const char *y)
         {
             g=x;
             strcpy(num,y);
你的 构造函数不太懂 能解释下吗?
 //ST():id(0),score(0){}
  ST(const int x,const double sc):id(x),score(sc)
   {
   }
谢谢了!
2016-04-14 22:23
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:2 
ST s[maxsize];

数组中的对象已经创建了
 
程序代码:
s[0]=ST(98,1306060132);
         s[1]=ST(97,1306060131);
         s[2]=ST(96,1306060134);
         s[3]=ST(95,1306060132);
         s[4]=ST(94,1306060129);

再调用构造函数是错的。
你的构造函数没问题,学号也可以用字符串。况且用int可以偷一下懒
但既然你的学号的字符串,先不说
ST s[maxsize];

 
程序代码:
s[0]=ST(98,1306060132);
         s[1]=ST(97,1306060131);
         s[2]=ST(96,1306060134);
         s[3]=ST(95,1306060132);
         s[4]=ST(94,1306060129);

本身有问题,第二个参数是int是什么意思。
ST(const int x,const double sc):id(x),score(sc)
{
}

主要是使用了初始化列表,没学过吗?
就是使用参数对成员进行初始化。对比
程序代码:
ST(const int x,const double sc)
{
  id=x;
  score=sc;
}

只是赋值而已,不是初始化。

未佩好剑,转身便已是江湖
2016-04-14 22:37
仰望星空的
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:50
专家分:248
注 册:2015-9-28
收藏
得分:0 
受教了~
2016-04-15 11:10
cityrunner
Rank: 2
等 级:论坛游民
帖 子:26
专家分:33
注 册:2016-1-22
收藏
得分:0 
回复 4楼 alice_usnet
哦,有的地方没看到,大概明白了,谢谢了。
2016-04-15 20:52
小盛开
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-4-16
收藏
得分:0 
回复 4楼 alice_usnet
什么叫初始化 啊?
2016-04-16 14:10
小盛开
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-4-16
收藏
得分:0 
回复 4楼 alice_usnet
#include<iostream>
using namespace std;
class sample{
public:
    sample(int i,int j)
    {
        x=i;
        y=j;
    }
    void disp()
    {
        cout<<"disp1"<<endl;
    }
    void disp()const{
        cout<<"disp2"<<endl;
    }
private:
    int x,y;
};
int main()
{
    const sample a(1,2);
    a.disp();
    return 0;
}
你也帮我看一下,我这里const sample a(1,2);赋值给谁啊,括号里的1,2和disp1和disp2有什么关联么?
2016-04-16 14:17
快速回复:c++ 初学者,求助,课后习题。
数据加载中...
 
   



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

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