Void CRole::setRoleGrade() { }
void CRole::print() { }
Int main() { }
7、利用文件流 将(6)中的数据输出到 外部文本中,如:data.txt class CRole {
public: CRole() :hp(0), grade(0){ strcpy_s(name, \); } //默认构造函数 CRole(char *nam, int h, int g) :hp(h), grade(g){ strcpy_s(name , nam); } //构造函数 ~CRole(){} //析构函数 public: void setRolename(); void setRoleHealth(); void setRoleGrade(); char* getRoleName(); int getRoleHealth(); int getRoleGrade(); void print(); protected: char name[16]; int hp; int grade; };
void CRole::setRolename() { cout << \的名称:\; cin>>name; }
void CRole::setRoleHealth() { cout << \的生命值:\; cin>>hp; }
CRole role1; role1.setRolename(); role1.setRoleHealth(); role1.setRoleGrade(); role1.print(); system(\); return 0;
cout << \的名称:\ << name << \ << \的生命值:\
<< hp << \ << \的等级:\ << grade << endl; cout << \的等级:\; cin >> grade;
Void CRole::setRoleGrade() { cout << \的等级:\; cin >> grade; }
void CRole::print() { ofstream outfile(\, ios::app); //利用文件流 将(6)中的数据输出到 外部文本中 outfile << \的名称:\ << name << \ << \的生命值:\ << hp << \ << \的等级:\ << grade << endl; outfile.close(); }
int main() { CRole role1; role1.setRolename(); role1.setRoleHealth(); role1.setRoleGrade(); role1.print(); return 0; }
8、编写一个程序,已有若干个学生数据,这些数据包括学号、姓名、
//语文成绩、数学成绩和英语成绩,求各门功课的平均分。要求设计不同的成员函数求出各门课程的平均分,并使用成员函数指针调用它们
Class CStudent {
public: CStudent(){} ~CStudent(){} public: char getStudentNmae(); int getStudentNumber(); void setStudentName(char *); void setStudentNumber(int Num); void ChineseMeanNumber(); void MathMeanNumber(); void EnglishMeanNumber(); void LessonMeanNumber(); void print(); protected: char name[20]; int Number; int ChineseGrade[3]; int MathGrade[3]; int EnglisGrade[3]; int ChineseMeanGrade; int MathMeanGrade; int EnglisMeanGrade; int LessonMeanGrade; };
void CStudent::setStudentName(char *CStudent) { strcpy_s(name, CStudent); }
void CStudent::setStudentNumber(int Num) { Number = Num; }
Char CStudent::getStudentNmae() { return name[20]; }
int CStudent::getStudentNumber() { return Number; }
Void CStudent::ChineseMeanNumber() { Int ChineseGrade[3] = {90,80,85}; ChineseMeanGrade = (ChineseGrade[0] + ChineseGrade[1] + ChineseGrade[2]) / 3; }
Void CStudent::MathMeanNumber() { Int MathGrade[3] = { 60, 60, 90 }; MathMeanGrade = (MathGrade[0] + MathGrade[1] + MathGrade[2]) / 3; }
void CStudent::EnglishMeanNumber() { Int EnglishGrade[3] = { 70, 70, 70 }; EnglisMeanGrade = (EnglishGrade[0] + EnglishGrade[1] + EnglishGrade[2]) / 3; }
void CStudent::LessonMeanNumber() { LessonMeanGrade = (ChineseMeanGrade + MathMeanGrade + EnglisMeanGrade) / 3; }
Void CStudent::print() { cout << \学生姓名:\ << name << \学生学号=\ << Number << \学生语文平均成绩=\ << ChineseMeanGrade << \学生数学平均成绩:\ << MathMeanGrade << \学生英语平均成绩:\ << EnglisMeanGrade << \学生各科的平均成绩:\ << LessonMeanGrade << endl; }
int _tmain(int argc, _TCHAR* argv[]) { //CStudent XZ; /*XZ.setStudentName(\程序员\ XZ.setStudentNumber(20141111); XZ.ChineseMeanNumber(); XZ.MathMeanNumber(); XZ.EnglishMeanNumber(); XZ.LessonMeanNumber(); XZ.print(); */ CStudent* pStudent = new CStudent(); //pStudent = &XZ; pStudent->setStudentName(\程序员\); pStudent->setStudentNumber(20141111); pStudent->ChineseMeanNumber();
}
pStudent->MathMeanNumber(); pStudent->EnglishMeanNumber(); pStudent->LessonMeanNumber(); pStudent->print(); delete pStudent; pStudent = NULL; system(\); return 0;
9、设计一个日期类Date,包括年、月、日等私有数据成员。要求实现日期的基本运算,如一日期加上天数、一日期减去天数、两日期相差的天数等。
思路分析:在Date类中设计如下重载运算符函数: Date operator+(int days); 返回一日期加天数得到的日期 Date operator-(int days); 返回一日期减去天数得到的日期 int operator-(Date &b); 返回两日期相差的天数
在实现这些重载运算符函数调用以下私有成员函数: leap(int); 判断指定的年份是否为闰年
dton(Date &); 将指定日期转换为从0年0月0日起的天数 ntod(int); 将指定的0年0月0日起的天数转换为对应的日期
class Date
{
private:
int year,month,day; public:
Date(){year=0;month=0;day=0;}//默认构造函数
Date(int x,int y,int z){year=x;month=y;day=z;}//重载构造函数 void add(int m);//加天数 void del(int m);//减天数 int diff(Date& q);//日期差 void display();//显示 };
void Date::add(int m) {
int d[12]={31,28,31,30,31,30,31,31,30,31,30,31},temp,f;//d为12个月每个月天数的数组 f=0;
while (m>0) {
if (year0==0)
d[1] = (year@0==0?29:28);//如果是闰年,2月天数为29 else
d[1] = (year%4==0?29:28);//如果是闰年,2月天数为29 temp=d[month-1]-day;
if (temp>=m)//如果所加天数未超过当月剩余天数 {
day=day+m; break; }
m-=temp; day=0; month++;
for (;month<=12;month++)//开始月遍历进行日期计算 {
if (d[month-1]>=m) {
day+=m; break; } else {
m-=d[month-1]; } }
if (month<=12)//若所加天数在本年12月内 break;
month=1;//所加天数超过今天剩余天数,月初始化为1月,即从下年一月继续算 year++;//加一年 } }
void Date::del(int m)//本函数注释与add基本相同 {
int d[12]={31,28,31,30,31,30,31,31,30,31,30,31},f; f=0;
while (m>0) {
if (year0==0)
d[1] = (year@0==0?29:28); else
d[1] = (year%4==0?29:28); if (day>=m) {
day=day-m; break; }
m-=day; month--;
for (;month>=1;month--) {
if (d[month-1]>=m) {
day=d[month-1]-m; break; } else {
m-=d[month-1]; } }
if (month>=1) break; month=12; year--; day=31; } }
int Date::diff(Date& q) {
int differece;
int d[12]={31,28,31,30,31,30,31,31,30,31,30,31},m,i; Date temp;
Date *pSmall,*pBig;