设计一个学生类CStudent,包括姓名和三门课程成绩,利用重载运算符“+”将所有学生C++
这是我写的,求大神解救!!!1
#include "iostream.h"
class student
{
private:
char a[20]='\0';
int x ,y ,z;
public :
student (char b[20],int m,int k,int t)
{
a=b;
x=m;
y=k;
z=t;
}
student operator +(student s);
int print()
{
return b/3;
}
};
student student:: operator +( student s)
{
student b;
b.x=x+s.x;
b.y=y+s.y;
b.z=z+s.z;
return b;
}
int main()
{
student s1(hank,80,80,80),s2(wei,80,80,80),s3;
s3=s1+s2;
s3.print();
} 展开
如下:
#include <iostream>
#include <cstring>
#include<IOMANIP>
using namespace std;
class student
{
private:
char a[20]; //不能在类定义中对非static const型变量赋值
int x ,y ,z;
int cnt; //计数器,存放成绩对应的人数。默认为1个学生的成绩。
public :
student():cnt(1){
a[0]='\0';
x=y=z=0;
}
student (char *b,int m,int k,int t):cnt(1)
{
strcpy(a,b); //字符串赋值
x=m;
y=k;
z=t;
}
student operator +(const student& s);//const 引用,提高效率
void print()
{
cout<<"course 1#,ave score:="<<fixed<<setprecision(2)<<(float) x/cnt<<endl;
cout<<"course 2#,ave score:="<<fixed<<setprecision(2)<<(float) y/cnt<<endl;
cout<<"course 3#,ave score:="<<fixed<<setprecision(2)<<(float) z/cnt<<endl;
}
};
student student:: operator +(const student& s)
{
student b;
b.x=x+s.x;
b.y=y+s.y;
b.z=z+s.z。
C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。
二十世纪八十年代,美国国家标准局为了避免各开发厂商用的C语言语法产生差异,给C语言制定了一套完整的美国国家标准语法,称为ANSI C。
作为C语言最初的标准。2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言编译器普遍存在于各种不同的操作系统中,例如Microsoft Windows, Mac OS X, Linux, Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。
#include <iostream>
#include <cstring>
#include<IOMANIP>
using namespace std;
class student
{
private:
char a[20]; //不能在类定义中对非static const型变量赋值
int x ,y ,z;
int cnt; //计数器,存放成绩对应的人数。默认为1个学生的成绩。
public :
student():cnt(1){
a[0]='\0';
x=y=z=0;
}
student (char *b,int m,int k,int t):cnt(1)
{
strcpy(a,b); //字符串赋值
x=m;
y=k;
z=t;
}
student operator +(const student& s);//const 引用,提高效率
void print()
{
cout<<"course 1#,ave score:="<<fixed<<setprecision(2)<<(float) x/cnt<<endl;
cout<<"course 2#,ave score:="<<fixed<<setprecision(2)<<(float) y/cnt<<endl;
cout<<"course 3#,ave score:="<<fixed<<setprecision(2)<<(float) z/cnt<<endl;
}
};
student student:: operator +(const student& s)
{
student b;
b.x=x+s.x;
b.y=y+s.y;
b.z=z+s.z;
b.cnt=cnt+1;//这里,b中存放的总成绩对应人数的计算
return b;
}
int main()
{
student s1("hank",80,80,80),s2("wei",80,90,81),s3, s4("Li",90,90,90);
s3 = s1+ s2 + s4;
s3.print();
}
using namespace std;
class student
{
public :
char a[20];
int x ,y ,z;
student(){}
student (char b[20],int m,int k,int t)
{
for(int i=0;i<20;i++)
{
a[i]=b[i];
}
x=m;
y=k;
z=t;
}
student operator +(student s);
};
student student:: operator +( student s)
{
student b;
b.x=x+s.x;
b.y=y+s.y;
b.z=z+s.z;
return b;
}
void print(student b,int n);
int main()
{
student s1("hank",81,82,84),s2("wei",79,78,76),s3;
s3=s1+s2;
print(s3,2);
return 0;
}
void print(student b,int n)
{
cout<<b.x/n<<endl<<b.y/n<<endl<<b.z/n<<endl;
}
其实用学生对象来放乘积和很不地道