
求高手解答一道c++题目
1楼编写一个程序,输入N个学生数据,包括学号,姓名,成绩,要求输出这些学生数据并计算平均分。设计一个学生类Student,除了包括no(学号),name(姓名)和deg(...
1楼
编写一个程序,输入N个学生数据,包括学号,姓名,成绩,要求输出这些学生数据并计算平均分。设计一个学生类Student,除了包括 no( 学号),name(姓名)和deg(成绩)数据成员外,有两个静态变量sum和num,分别存放总分和人数,另有两个普通成员函数setdata()和 disp(),分别用于给数据成员赋值和输出数据成员的值,另有一个静态成员函数avg(),它用于计算平均分,在主函数中定义了一个对象数组用于储存输入的学生数据。 展开
编写一个程序,输入N个学生数据,包括学号,姓名,成绩,要求输出这些学生数据并计算平均分。设计一个学生类Student,除了包括 no( 学号),name(姓名)和deg(成绩)数据成员外,有两个静态变量sum和num,分别存放总分和人数,另有两个普通成员函数setdata()和 disp(),分别用于给数据成员赋值和输出数据成员的值,另有一个静态成员函数avg(),它用于计算平均分,在主函数中定义了一个对象数组用于储存输入的学生数据。 展开
3个回答
展开全部
// 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;
}
//
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//绝对是我自己写的 有问题可以讨论
#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;
}
#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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
邮箱
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询