设计一个类来计算某个学生3门课的平均值,对学生的描述除了成绩之外,还有学生的姓名,编程显示5个学生的姓名和平均成绩,及总平均值,要求用到构造函数?
 
十分感谢!
设计一个类来计算某个学生3门课的平均值,对学生的描述除了成绩之外,还有学生的姓名,编程显示5个学生的姓名和平均成绩,及总平均值,要求用到构造函数?
 
十分感谢!
 2006-11-21 11:16
	    2006-11-21 11:16
   2006-11-21 11:55
	    2006-11-21 11:55
   谢谢
谢谢
 2006-11-21 11:58
	    2006-11-21 11:58
  class Student
{
    char name[20];
    float avg;
public:
    Studeng(char str[]='\0',float a=0,float b=0,float c=0){
        while((*(name++)=*(str++))!='\0');
        avg=(a+b+c)/3;
    }
};

 2006-11-21 14:53
	    2006-11-21 14:53
   2006-11-21 15:56
	    2006-11-21 15:56
  
class Student //定义学生成绩类 
{ char Name[20]; //定义描述学生成绩的数据成员
float Phi,Math,Eng,Ave;
void Display(student s) //定义显示成绩的成员函数
{ cout<<s.Name<<'\t''<<s.Ave<<'\n';}
void Average(Student &s) //定义计算平均成绩的成员函数
{ s.Ave=(s.Phi+s.Math+s.Eng)/3;}
} ;
 2006-11-21 16:10
	    2006-11-21 16:10
   2006-11-21 16:18
	    2006-11-21 16:18
  #include <iomanip>
#include  <iostream>
using  namespace  std;
class student 
{
public:
  
  student()
   {
    course1=0;
    course2=0;
    course3=0;
   }
  void Init(int j) 
  {    
    cout<<"请输入第"<<j+1<<"个学生的姓名: "<<endl;
    
    cin.getline(name,20,'\n');
    
  cout<<"请输入第"<<j+1<<"个学生的3门课程成绩: "<<endl;
   
   cin>>course1>>course2>>course3;
   cin.get();
   cout<<endl;
   
  }
  float average() 
  {
   return  (course1+course2+course3)/3.0;   
  }
  
  void display(float aver) 
  {
      cout<<setiosflags(ios::left)<<setw(15)<<name<<setw(15)<< average()<<setw(15)<< aver<<endl; 
  }
private:
  char name[20];
  int course1;
  int course2;
  int course3;
};
int main()
{
 student stu[4];  
 float aver=0.0; //总平均成绩
 for(int i=0;i<4;i++)
 {
  
   stu[i].Init(i); 
   aver +=stu[i].average(); 
 }
 aver=aver/4; 
 cout<<setiosflags(ios::left)<<setw(15)<<"姓名  "<<setw(15)<<"个人平均成绩"<<setw(15)<<"总平均成绩"<<endl;
 for( i=0;i<4;i++)
 { 
   stu[i].display(aver);   
 }
return 1;
}
初学者,请多指教!!
  
 

 2006-11-22 12:36
	    2006-11-22 12:36
  谢谢,只是做了一些修改!
1>把for(int i=0;i<4;i++)改成了for(int i=0;i<=4;i++),要求显示5个学生的成绩和姓名;
2>把return 1改成了return 0或return ();方便进行屏幕输出!
谢谢指点!
改正后的程序如下:
#include <iomanip>
#include  <iostream>
using  namespace  std;
class student 
{
public:
  
  student()
   {
    course1=0;
    course2=0;
    course3=0;
   }
  void Init(int j) 
  {    
    cout<<"请输入第"<<j+1<<"个学生的姓名: "<<endl;
    
    cin.getline(name,20,'\n');
    
  cout<<"请输入第"<<j+1<<"个学生的3门课程成绩: "<<endl;
   
   cin>>course1>>course2>>course3;
   cin.get();
   cout<<endl;
   
  }
  float average() 
  {
   return  (course1+course2+course3)/3.0;   
  }
  
  void display(float aver) 
  {
      cout<<setiosflags(ios::left)<<setw(15)<<name<<setw(15)<< average()<<setw(15)<< aver<<endl; 
  }
private:
  char name[20];
  int course1;
  int course2;
  int course3;
};
int main()
{
student stu[4];  
float aver=0.0; //总平均成绩
for(int i=0;i<=4;i++)
{
  
   stu[i].Init(i); 
   aver +=stu[i].average(); 
}
aver=aver/5; 
cout<<setiosflags(ios::left)<<setw(15)<<"姓名  "<<setw(15)<<"个人平均成绩"<<setw(15)<<"总平均成绩"<<endl;
for(int i=0;i<=4;i++)
{ 
   stu[i].display(aver);   
}
return 0;//屏幕输出,换成return 1,不进行屏幕输出
}
在C-Free 3.5中运行通过!
 2006-11-22 14:56
	    2006-11-22 14:56
  好象还有一些时数据转换的问题
比如整型和浮点型转换时的错误提示
 2006-11-22 15:12
	    2006-11-22 15:12