float price;
static float discount; static float sum; static int n; };
void Product::total() {float rate=1.0;
if(quantity>10) rate=0.98*rate;
sum=sum+quantity*price*rate*(1-discount); n=n+quantity; }
void Product::display() {cout< cout< float Product::average() {return(sum/n);} float Product::discount=0.05; float Product::sum=0; int Product::n=0; int main() { Product Prod[3]={ Product(101,5,23.5),Product(102,12,24.56),Product(103,100,21.5) }; for(int i=0;i<3;i++) Prod[i].total(); Product::display(); return 0; } 16. 有一个学生类student,包括学生姓名、成绩,设计一个友元函数比较两个学生成绩的高低,并求出最高分者和最低分者。 【知识点】:3.6 【参考分】:30分 【难易度】:B 【答案】: #include char name[10]; int deg; public: student(char na[],int d) f strcpy(name,na); deg=d; } char *getname(){return name;) friend int compare(student &s1,student &s2) { if(s1.deg>s2.deg) return 1; else if(s1.deg==s2.deg) return 0; else return -1; } }; void main() { student st[]={student(\王华\李明\ student(\张伟\孙强\ int i,min=0,max=0; for(i=1;i<4;i++) { if(compare(st[max],st[i])==-1) max=i; else if(compare(st[min],st[i])==1) min=i; } cout<<\输出结果:\ cout<<\ 最高分者:\ cout<<\最低分者:\} 17. 有一个学生类Student,包括学生姓名、成绩,设计一个友元函数输出成绩对应的等级:大于等于90为优;80~89为良:70~79为中;60~69为及格;小于60为不及格。 【知识点】:3.6 【参考分】:30分 【难易度】:B 【答案】: #include { char name(10]; int deg; char level[7]; public: Student(char na[],int d) { strcpy(name,na); deg=d; char *getname(){return name;} friend void trans(Student &s) { if(s.deg>=90) strcpy(s.1evel,\优\ else if(s.deg>=80) strcpy(s.1evel,\良\ else if(s.deg>=70) strcpy(s.level,\中\ else if(s.deg>=60) strcpy(s.1evel,\及格\ else Strcpy(s.level,\不及格\ } void disp() { cout< void main() { Student st[]=fStudent(\王华\李明\ Student(\张伟\孙强\ cout<<\输出结果:\ cout< trans(st[i]); st[i].disp(); } } 18. 设计一个长方体,包含有长、宽和高度私有数据成员,用友元函数的方法求长方体的体积。 【知识点】:3.6 【参考分】:20分 【难易度】:C 【答案】: #include float Length; //长度 float Width; //宽度 float High; //高度 public: Cuboid(float l,float w,float h) { Length=l;Width=w;High=h; } friend float Volume(Cuboid &); }; float Volume(Cuboid &c) { return c.Length *c.Width *c.High; } void main() { Cuboid c(2,5,6); cout<<\长方体积=\} 19. 设计一个三角形类Triangle,包含三角形三条边长的私有数据成员,另有一个重载运算符“+”,以实现求两个三角形对象的面积之和。 【知识点】:3.6 4.2 【参考分】:20分 【难易度】:B 【答案】:在Triangle类中设计一个友元函数operator+(Triangle tl,Triangle t2),它重载运算符“+”,返回tl和t2两个三角形的面积之和。程序如下: #include int x,y,z; double area; public: Triangle(int i,int j,int k) { double s; x=i;y=j;z=k; s=(x+y+z)/2.0; area=sqrt(s *(s-x)*(s-y)*(s-z)); } void disparea() { cout<<\ } friend double operator+(Triangle t1,Triangle t2) { return t1.area+t2.area; } }; void main() { Triangle t1(3,4,5),t2(4,5,6); double s; cout<<\:\ cout<<\:\ s=t1+t2; cout<<\总面积=\} 20. 设计一个三角形类Triangle,包含三角形三条边长的私有数据成员,另有一个重载运算符“+”,以实现求任意多个三角形的面积之和。 【知识点】:3.6 4.2 【参考分】:30分 【难易度】:B 【答案】:对于式子:s=t1+t2+t3,先计算tl+t2,返回一个double数,然后再进行该double数+t3的计算,显然没有这样的重载运算符“+”友元函数,只需添加这样的重载运算符“+”友元函数即可。程序如下: #include int x,y,z; double area; public: Triangle(int i,int j,int k) { double s; x=i;y=j; z=k; s=(x+y+z)/2.0; area=sqrt(s*(s-x)*(s-y)*(s—z)); } void disparea() { cout<<\ }