注册 登录
编程论坛 C++教室

求高手解答一道 c++题目

kozn 发布于 2010-06-18 00:29, 1061 次点击
编写一个程序,输入N个学生数据,包括学号,姓名,成绩,要求输出这些学生数据并计算平均分。设计一个学生类Student,除了包括no( 学号),name(姓名)和deg(成绩)数据成员外,有两个静态变量sum和num,分别存放总分和人数,另有两个普通成员函数setdata()和 disp(),分别用于给数据成员赋值和输出数据成员的值,另有一个静态成员函数avg(),它用于计算平均分,在主函数中定义了一个对象数组用于储存输 入的学生数据。
6 回复
#2
ciweitou1632010-06-18 11:11
论坛里有好多这样的例子,自己找找看吧!
#3
zgxyz20082010-06-19 03:02
定义对象数组需要知道数组的大小,但学生人数却未知?难道需要定义一个大范围的...
#4
zgxyz20082010-06-19 03:51
改了一个给你作参考吧:
程序代码:
#include "iostream"
#include "string"
using namespace std;


static int num=0;  //存放学生总数;
static float sum=0.0;   //存放学生成绩总分数;
//定义学生类
class student
{   
    int no;   //学号;
    string name;  //姓名;
    float deg; //成绩;
public:
   
public:
    void setdata(student& s1);    //学生数据成员赋值接口;
     void disp(student s2);       //输出接口;
     static float avg();
};

//学生数据录入;
void student::setdata(student& s1)
{
     cout<<"输入学号:"<<endl;
     cin>>s1.no;
     cout<<"输入学生姓名:"<<endl;
     cin>>s1.name;
     cout<<"输入学生成绩:"<<endl;
     cin>>s1.deg;
     sum+=s1.deg;
      num++;
}

//学生数据输出;
void student::disp(student s2)
{
     cout<<"学生的信息如下:"<<endl;
     cout<<s2.no<<endl;
     cout<<s2.name<<endl;
     cout<<s2.deg<<endl;
}

//计算平均分;
float student::avg()
{
     cout<<"学生成绩的平均分为:";
     return (sum/num);
}
void main()
{
    const int m=2;
    student stu[m];
    for (int i=0;i<m;i++)
    {
        stu[i].setdata(stu[i]);
    }
    for (int j=0;j<m;j++)
    {
        stu[j].disp(stu[j]);
    }
    cout<<student::avg();
}

 
#5
郑继凯2010-06-19 16:38
呵呵
#6
jmjy2010-06-19 16:54
作业贴~~~还是那么多~~~
#7
南国利剑2010-06-19 16:56
严重警告。
请不要再发作业帖。
1