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

1楼编写一个程序,输入N个学生数据,包括学号,姓名,成绩,要求输出这些学生数据并计算平均分。设计一个学生类Student,除了包括no(学号),name(姓名)和deg(... 1楼
编写一个程序,输入N个学生数据,包括学号,姓名,成绩,要求输出这些学生数据并计算平均分。设计一个学生类Student,除了包括 no( 学号),name(姓名)和deg(成绩)数据成员外,有两个静态变量sum和num,分别存放总分和人数,另有两个普通成员函数setdata()和 disp(),分别用于给数据成员赋值和输出数据成员的值,另有一个静态成员函数avg(),它用于计算平均分,在主函数中定义了一个对象数组用于储存输入的学生数据。
展开
 我来答
程序之鬼
2010-06-18
知道答主
回答量:16
采纳率:0%
帮助的人:19.6万
展开全部
// Test.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <string>
#include <stdlib.h>
#include<iostream>
using namespace std;
class Student
{
public:
Student()
{
no = NULL;
name = NULL;
deg = 0;

}
virtual ~ Student()
{
if(no != NULL)
delete no;
if(name != NULL)
delete name;
}
public:
void setData(char* no,char* name,float deg)
{
if(this->no != NULL)
delete this->no;
this->no = new char[strlen(no)+1];
strcpy(this->no,no);

if(this->name != NULL)
delete this->name;
this->name = new char[strlen(name)+1];
strcpy(this->name,name);
this->deg = deg;
sum += deg;
num++;
}

void disp()
{
cout<<"no:"<<no<<endl;
cout<<"name:"<<name<<endl;
cout<<"deg:"<<deg<<endl;
}
static float avg()
{
if(num != 0)
return sum*1.0/num;
else
return -1;
}

private:
char* no;
char* name;
float deg;
static long sum;
static int num;
};
long Student::sum = 0;
int Student::num = 0;

void main()
{
Student stu[3];
stu[0].setData("200531130025","xu",68);
stu[1].setData("200531130026","wang",78);
stu[2].setData("200531130027","song",88);

for(int i = 0 ; i < 3;i++)
{
stu[i].disp();
cout<<endl;
}
cout<<endl;
cout<<"avg:"<<Student::avg()<<endl;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
可可可可86
2010-06-18 · TA获得超过197个赞
知道答主
回答量:150
采纳率:0%
帮助的人:175万
展开全部
//绝对是我自己写的 有问题可以讨论
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

#define ARR_SIZE 10 //在这里改变ARR_SIZE的值可以改变数组中学生的数目

class Student
{
private:
string no;
string name;
float deg;
static float sum;
static int num;
public:
Student() //Student对象在构造是需从键盘输入数据
{
cout<<"请依次输入一个学生的学号姓名成绩:";
cin>>no>>name>>deg;
sum+=deg;
++num;
}
~Student()
{
sum-=deg;
--num;
}
void setdata(string _no,string _name,float _deg)
{
sum-=deg;

no=_no;
name=_name;
deg=_deg;

sum+=deg;
}
void disp(){cout<<'\t'<<no<<'\t'<<name<<'\t'<<deg<<endl;}
static float avg()
{
return sum/num;
}
};

float Student::sum=0.0f;
int Student::num=0;

int main()
{
int i;
Student stuArr[ARR_SIZE];
cout<<"所有学生的信息如下\n";
for (i=0;i<ARR_SIZE;++i)
{
stuArr[i].disp();
}
cout<<"所有学生的平均成绩:\t"<<Student::avg()<<endl;
stuArr[2].setdata("03","re",90);
cout<<"调用函数改变了第三个学生的信息"<<endl;
cout<<"改变后所有学生的信息如下\n";
for (i=0;i<ARR_SIZE;++i)
{
stuArr[i].disp();
}
cout<<"改变后所有学生的平均成绩:\t"<<Student::avg()<<endl;
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
颂鹰谊k
2010-06-18 · 超过20用户采纳过TA的回答
知道答主
回答量:93
采纳率:0%
帮助的人:60.4万
展开全部
邮箱
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式