求高手看看,程序那里错啦,谢谢啦,急!!
#include <iostream.h>
const int n=2;
const int m=3;
class A
{ //int a[n][m];
public:
A(int q,int w,int e,int r,int t,int y)
{ a[n][m]={q,w,e,r,t,y}
void Total () ;
void Average ( );
void print();
private:
int a[n][m];
};
void A:: Total()
{
for(int i=0; i<n; i++)
{
int sum= 0;
for(j=0;j<m;j++ )
sum[i]=sum+a[i][j];
}
}
void A:: Average()
{
for( i=0; i<m; i++)
{
int sum= 0;
for(j=0;j<n;j++ )
sum[i]=sum+a[i][j];
}
}
void A:: print()
{ int sum;
for(int i=0; i<n; i++)
cout<<"第" << (i + 1)<< "个学生总分:"<< sum[i+1]<< endl;
for( i=0; i<m; i++)
cout<<"第"<<i+1<<"课程的平均成绩 average is:"<<double(sum[i+1])/n<<endl;
}
class B:public A
{
public:
B(int q,int w,int e,int r,int t,int y,int i,int j):A(q,w,e,r,t,y),b(i,j)
{A::print();cout<<i<<","<<j<<endl;}
// void print();
private:
//A a;
int b;
};
#include <iostream.h>
#include "xsl.h"
void main()
{B bb(1,2,3,4,5,6,7,8);
bb.print();
// a.print();
}
定义一个学生类,2个学生3门成绩,计算没人的总成绩,每一门平均分,定义协会类,当然继承学生类,输出2个成绩,
[解决办法]
const int n=2;const int m=3;class A{ //int a[n][m];public: A(int q,int w,int e,int r,int t,int y) { a[0][0] = q; a[0][1] = w; a[0][2] = e; //下面自己写吧,由于你已经定义了int a[n][m]数组,不支持这样的初始化了。 // a[n][m]={q,w,e,r,t,y}; } void Total () ; void Average ( ); void print(); private: int a[n][m];}; void A:: Total() { int sum = 0; for(int i=0; i<n; i++) { for(int j=0;j<m;j++ ) sum=sum+a[i][j]; } } void A:: Average() { int sum = 0; for(int i=0; i<m; i++) { // int sum= 0; //我不知道你这想定义什么?sum还是数组sum[]?? for(int j=0;j<n;j++ ) sum=sum+a[i][j]; } } void A:: print() { //具体的这个我觉得你理解错了,你在这定义了sum???这里的sum不是你上面的sum,没有值啊? //好好的修改下吧 int sum; for(int i=0; i<n; i++) cout<<"第" << (i + 1)<< "个学生总分:"<< sum<< endl; for(int i=0; i<m; i++) cout<<"第"<<i+1<<"课程的平均成绩 average is:"<<double(sum)/n<<endl; } class B:public A { public: B(int q,int w,int e,int r,int t,int y,int i,int j):A(q,w,e,r,t,y),b(i) {A::print();cout<<i<<","<<j<<endl;} // void print(); private: // A a; int b; };#include "xsl.h" void main() {B bb(1,2,3,4,5,6,7,8); bb.print(); // a.print(); }
[解决办法]
没见过这么写代码的,2个学生,3们成绩,就在class定义1个6个元素的数组,如果3个学生呢,重新修改数组定义,构造函数的接口也得修改。如果需求变了,某高校有1万个人,100们课,是不就要定义100×10000个参数的构造函数的。
替你改好了,下面是代码
//定义一个学生类,2个学生3门成绩,计算没人的总成绩,每一门平均分,定义协会类,当然继承学生类,输出2个成绩,
#include <iostream>using namespace std;const int n=2;const int m=3;class A{ //int a[n][m];public: A(int s1,int s2,int s3); int Total () ; int Average ( ); void print(); private: int a[m];};A::A(int s1,int s2,int s3){ a[0]=s1; a[1]=s2; a[2]=s3;}int A:: Total(){ int sum=0; for(int i=0; i<m; i++) sum+= this->a[i]; return sum;}int A::Average(){ int i,ave; ave=0; for( i=0; i<m; i++) ave+=this->a[i]; return ave/m;}void A:: print(){ int sum,ave; sum=this->Total(); ave=this->Average(); cout << "总分:"<< sum << endl; cout << "课程的平均成绩" << ave <<endl;}class B:public A{public: B(int s1,int s2,int s3);private: int b;};B::B(int s1,int s2,int s3):A(s1,s2,s3) //调用基类的构造函数{ }void main(){ B stu1(80,88,90); B stu2(50,60,70); cout << "第1个学生的总成绩和平均成绩是:" << endl; stu1.print(); cout << "第2个学生的总成绩和平均成绩是:" << endl; stu2.print();}
[解决办法]
看看这个
#include <iostream>using namespace std;const int m=3;class A{ //int a[n][m];public: A(int s1,int s2,int s3); int Total () ; int Average ( ); void print();private: int a[m];};A::A(int s1,int s2,int s3){ a[0]=s1; a[1]=s2; a[2]=s3;}int A:: Total(){ int sum=0; for(int i=0; i<m; i++) sum+= this->a[i]; return sum;}int A::Average(){ int i,ave; ave=0; for( i=0; i<m; i++) ave+=this->a[i]; return ave/m;}void A:: print(){ int sum,ave; sum=this->Total(); ave=this->Average(); cout << "总分:"<< sum << endl; cout << "课程的平均成绩" << ave <<endl;}class B:public A{public: B(int s1,int s2,int s3,int s4,int s5); void print();private: int b1; int b2;};B::B(int s1,int s2,int s3,int s4,int s5):A(s1,s2,s3) //调用基类的构造函数{ b1=s4; b2=s5;}void B:: print(){ A::print();cout << "协会2课成绩" << endl; cout << b1 << "," << b2 <<endl;}void main(){ B stu1(80,88,90,70,80); B stu2(50,60,70,78,89); cout << "第1个学生的总成绩和平均成绩是:" << endl; stu1.print(); cout << "第2个学生的总成绩和平均成绩是:" << endl; stu2.print();}