C++编译错误 求助,高手进! 欲实现:计算5个学生的某一门成绩的总和及平均分

2025-12-18 06:52:16
推荐回答(3个)
回答1:

第36行 Student student[5]={Student(na[0],ma[0]),Student(na[1],ma[1]),Student(na[2],ma[2]),Student(na[3],ma[3]),Student(na[4],ma[4]),Student(na[5],ma[5])};
这里你Student里的构造函数的第一个参数是一个字符串n[],但是这一行你给的都是一个字符,要修改的话可以强制转换一下,就是每个参数都写成这样Student((char*)na[0],ma[0])
另外,除了这个错误,你这个程序还有很多错误,不知道你要的是什么算法,就没给你修改,你自己看看吧

回答2:

#include
#include
class Student
{
public:
Student(char n,int m)
{
strcpy(name,&n);
mark=m;
}
void total()
{
sum+=mark;
count++;
}
static double average()
{
return(double)Student.sum/Student.count;
}
static int sum,count;
private:
char name[20];
int mark;

};
int Student::sum=0;
int Student::count=0;
void main()
{
int ma[5];
char na[6];
for(int i=0;i<5;i++)
{
cout<<"请输入第"< cin>>na[i]>>ma[i];
}
Student student[5]={Student(na[0],ma[0]),Student(na[1],ma[1]),Student(na[2],ma[2]),Student(na[3],ma[3]),Student(na[4],ma[4])};
for(int j=0;j<5;j++)
student[i].total();
cout<<"该五名同学的总成绩为:"< cout<<"该五名同学的平均分为:"<}

只是针对这个程序的错误修改了一下,其实里面很多实现都要优化的。错误判断什么的,你可以自己再修改一下。

回答3:

#include
#include
class Student
{
public:
Student(char n[],int m)
{
strcpy(name,n);
mark=m;
sum+=mark;
count++;//每次构造的时候就解决累加的问题
}
/*
void total()
{
sum+=mark;
count++;
}*/
static double average()
{
return(double)Student.sum/Student.count;
}
private:
char name[20];
int mark;
public:
static int sum,count;
};
int Student::sum=0;
int Student::count=0;
void main()
{
int ma[5];
char na[6][20];//你要输入6个名字,应该是6个字符串,二维的CHAR每一维表示一个完整的字符串,na[i]表示每一个的起始地址
for(int i=0;i<5;i++)
{
cout<<"请输入第"< cin>>na[i]>>ma[i];
}
Student student[5]={Student(na[0],ma[0]),Student(na[1],ma[1]),Student(na[2],ma[2]),Student(na[3],ma[3]),Student(na[4],ma[4])};
/*for(int j=0;j<5;j++)
student[i].total();*/
cout<<"该五名同学的总成绩为:"< cout<<"该五名同学的平均分为:"<}