| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 694 人关注过本帖
标题:求助:大家看我看看程序,为什么我的程序运行的时候什么都没有呢
只看楼主 加入收藏
yuer981211
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-10-22
收藏
 问题点数:0 回复次数:2 
求助:大家看我看看程序,为什么我的程序运行的时候什么都没有呢
求助:大家看我看看程序,为什么我的程序运行的时候什么都没有呢
#include <iostream.h>
class SchoolClass  //声明了一个类//
{
    int *ClassData;//声明了一个ClassData的指针变量//
    int ClassDataIndex;//一个整数索引,是数据存储区的索引,初始化为0 //
public:
    SchoolClass(int NumberStudents);//构造了一个函数,NumberStudents为函数的参数//
    ~SchoolClass(void);//销毁器,销毁以前分配的内存//

    void AddScore(int Score);
    int GetScore(int Index);
    float AverageScore(void);
};

SchoolClass::SchoolClass(int NumberStudents)//调用所构造的函数//
{
    ClassData=new int[NumberStudents];//new运算符用来给新数据分配存储空间,
                                      //即给NumberStudents分配空间
    ClassDataIndex=0;
}

SchoolClass::~SchoolClass(void)
{
    delete ClassData;//删除ClassData以前的内存
}

void SchoolClass::AddScore(int Score)
{
    ClassData[ClassDataIndex++]=Score;//ClassData为指针(我觉得像是一个数组)
                                      //ClassDataIndex为索引(我觉得它比较象指针)
                                      //每执行一次AddScore索引就增加一次,
                                      //并将数组中的值传递给Score,我感觉Score里只有一个值
                                      //想错了,犯糊涂了,应该是每得到一个Score,就放到ClassData
                                      //数组里,并建立一个索引。
                                      //这里还有一个问题,那就是赋值语句怎么写,谁给谁赋值,
                                      //ClassDataIndex=0,这个就是把0 赋值给ClassDataIndex,
                                      //可上面这样理解那就是反过来了阿?
}

int SchoolClass::GetScore(int Index)
{
    if (Index <= ClassDataIndex)
    {
       return ClassData[Index];
    }
    else
    {
        return -1;
    }
}

float SchoolClass::AverageScore(void)
{
    float Sum=0;
    if (ClassDataIndex==0)
    {
        return -1;
    }
    for (int loop_index=0; loop_index<ClassDataIndex;loop_index)
    {
        Sum+=(float) ClassData[loop_index];
    }
    return Sum/(float) ClassDataIndex;
}
void main()
{   SchoolClass HistoryClass(9);//声明SchoolClass的 两个对象,HistoryClass(9),
                                // EnglishClass(10)
    SchoolClass EnglishClass(10);

    HistoryClass.AddScore(80);
    HistoryClass.AddScore(81);
    HistoryClass.AddScore(82);
    HistoryClass.AddScore(83);
    HistoryClass.AddScore(84);
    HistoryClass.AddScore(85);
    HistoryClass.AddScore(86);
    HistoryClass.AddScore(87);
    HistoryClass.AddScore(88);

    EnglishClass.AddScore(91);
    EnglishClass.AddScore(92);
    EnglishClass.AddScore(93);
    EnglishClass.AddScore(94);
    EnglishClass.AddScore(95);
    EnglishClass.AddScore(96);
    EnglishClass.AddScore(97);
    EnglishClass.AddScore(98);
    EnglishClass.AddScore(99);
    EnglishClass.AddScore(100);

    cout <<"Average Score for History Class:"<<
            HistoryClass.AverageScore()<<"\n";
    cout <<"Average Score for English Class:"<<
        EnglishClass.AverageScore()<<"\n";
   
}


这是我按书上说得写的,注释部分为我的理解,
程序运行应该输出两句话和数字,我的却什么也没有,请教大家。
是不是EnglishClass.AverageScore()调用的问题啊
搜索更多相关主题的帖子: 运行 
2008-11-06 14:39
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
ClassDataIndex不是指针,是下标,就象标记一样,记录当前数组中的空元素,你的代码还少对这个下标值的控制,就是它不能让数组溢出,范围在大于等于0,小于数组元素最大容量.
AddScore是把一个数值放到数组最后一个空元素位置上,就象是一排箱子,按顺序把物品放入到这排箱子中一样,所以,ClassDataIndex是控制当前那个是这一排箱子中的第一个空箱子的,也就是它是记录第一个空箱子的位置的标记.
SchoolClass HistoryClass(9);则是放了一排有9个箱子的一个数组.另一个同理,是一排10个箱子的数组.
至于为什么没看到,我想你可能是什么也没看到吧,连运行窗口都没看到,那是因为代码已经执行结束,程序退出了.
你在结束的地方加上以下代码:
system("pause");//让程序停下来,按任意键继续
2008-11-06 22:43
tuoxie
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-11-7
收藏
得分:0 
你用的是什么编辑器?
2008-11-07 10:47
快速回复:求助:大家看我看看程序,为什么我的程序运行的时候什么都没有呢
数据加载中...
 
   



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

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