练习1:(简单)
基于如下程序,按要求修改和完善。
#include <iostream>
using namespace std;
class Student
{public:
Student(int n,float s):num(n),score(s){}
void change(int n,float s) {num=n;score=s;}
void display(){cout<<num<<" "<<score<<endl;}
private:
int num;
float score;
};
int main()
{Student stud(101,78.5);
stud.display();
stud.change(101,80.5);
stud.display();
return 0;
}
要求:增加一个fun函数,改写main函数。改为在fun函数中调用change和display函数。在fun函数中使用对象的引用(Student&)作为形参。
示例如下:(答案不唯一)
练习2:(中等)
商店销售某一商品,商店每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,对一次购10件以上者,还可以享受98折优惠。现已知3个销货员一次销售情况为
销货员号(num) | 销货件数(quantity) | 销货单价(price) |
101 | 5 | 23.5 |
102 | 12 | 24.56 |
103 | 100 | 21.5 |
请编写程序,计算出此商品的总销售款sum以及每件商品的平均售价。要求用静态数据成员和静态成员函数实现。
示例如下:(答案不唯一)
练习3:(中等)
基于如下程序,按要求修改和完善。
#include <iostream>
using namespace std;
class Date;
class Time
{public:
Time(int,int,int);
void display(Date &);
private:
int hour;
int minute;
int sec;
};
class Date
{public:
Date(int,int,int);
friend void Time::display(Date &);
private:
int month;
int day;
int year;
};
Time::Time(int h,int m,int s)
{hour=h;
minute=m;
sec=s;
}
void Time::display(Date &d)
{
cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;
cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
Date::Date(int m,int d,int y)
{month=m;
day=d;
year=y;
}
int main()
{
Time t1(10,13,56);
Date d1(12,25,2004);
t1.display(d1);
return 0;
}
修改要求1:将display函数不放在Time类中,而作为类外的普通函数,然后分别在Time和Date类中将display函数声明为友元函数。在主函数中调用display函数,display函数分别引用Time和Date两个类的对象的私有数据,输出年、月、日和时、分、秒。
修改要求2:重新基于上述源程序(不是在修改要求1基础上),将Time类声明为Date类的友元类,通过Time类中的display函数引用Date类对象的私有数据,输出年、月、日和时、分、秒。
示例如下:(答案不唯一)
修改一:
修改二: