C++练习题(自己整理).doc_第1页
C++练习题(自己整理).doc_第2页
C++练习题(自己整理).doc_第3页
C++练习题(自己整理).doc_第4页
C++练习题(自己整理).doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1) 实现一个函数可从传入的数组中打出最大的数来。2) 实现一个函数,交换int iA, int iB 两个变量的值(-引用传参-)3) 实现一个函数,交换int iA, int iB 两个变量的值(-指针传参-)4) 实现一个函数,逆序交换数组元素的值,如:int iArray5= 0,1,2,3,4,5,6变为 0,1,2,3,4,5,65):在一个RPG游戏中,有5个角色,每个角色有3个属性,(定义一个角色的结构体 包含三个属性名称、生命值与等级,然后创建5个角色对象)从键盘输入名称、生命值与等级,6):在一个RPG游戏中,有5个角色,每个角色有3个属性,(定义一个角色的类包含三个成员变量名称、生命值与等级,三个查询属性值的成员函数)从键盘输入名称、生命值与等级,再分别调用查询函数输出到控制台显示7):利用文件流 将(6)中的数据输出到 外部文本中,如:data.txt 8):编写一个程序,已有若干个学生数据,这些数据包括学号、姓名、语文成绩、数学成绩与英语成绩,求各门功课的平均分。要求设计不同的成员函数求出各门课程的平均分,并使用成员函数指针调用它们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日起的天数转换为对应的日期10、设计一个点类Point,再设计一个矩形类,矩形类使用Point类的两个坐标点作为矩形的对角顶点。并可以输出4个坐标值与面积。使用测试程序验证程序。11、使用内联函数设计一个类,用来表示直角坐标系中的任意一条直线并输出它的属性。答案:1、实现一个函数可从传入的数组中找出最大的数来#include stdafx.h#include using namespace std;int Max(int a)int max=0;for (int i = 0; i 10;i+)if (maxai) max = ai;cout 最大值= max;return 1;int _tmain(int argc, _TCHAR* argv)int a10 = 1,5, 66, 2, 3, 4, 7, 8 ,9,88; Max(a);system(pause);return 0;2、实现一个函数,交换int iA, int iB 两个变量的值(-引用传参-)#include stdafx.h#include using namespace std;void Swap(int &iA, int &iB)int temp;temp = iA;iA = iB;iB = temp;Void Swap(int &iA, int &iB);int main()Int iA = 9;int iB = 4;cout iA= iA , iB= iB endl;Swap(iA, iB);cout iA= iA , iB= iB endl;system(pause);return 0;3、实现一个函数,交换int iA, int iB 两个变量的值(-指针传参-)#include stdafx.h#include using namespace std;void Swap(int *iA, int *iB)int tmpe;tmpe = *iA;*iA = *iB;*iB = tmpe;Void Swap(int*, int*);Int main()Int iA = 9;Int iB = 4;cout iA= iA , iB= iB endl;Swap(&iA, &iB);cout iA= iA , iB= iB endl;system(pause);return 0;4、 实现一个函数,逆序交换数组元素的值,如:int iArray5= 0,1,2,3,4,5,6变为 6,5,4,3,2,1,0#include stdafx.h#include using namespace std;void ArayExchang(int * iArray,int ilength)Int tmpe;int num = ilength / 2;for (int iCount = 0; iCount num; iCount+)tmpe = iArrayiCount;iArrayiCount = iArrayilength-iCount-1;iArrayilength - iCount - 1 = tmpe;Void ArayExchang(int *,int );int main() int iArray7 = 0, 1, 2, 3, 4, 5, 6 ;for (int j = 0; j 7; j+)cout Arrayj= iArrayj =0; j-)cout Array j = iArrayj endl;system(pause);return 0;5、在一个RPG游戏中,有5个角色,每个角色有3个属性,(定义一个角色的结构体 包含三个属性名称、生命值与等级,然后创建5个角色对象)从键盘输入名称、生命值与等级struct Role/结构体里面一般没有成员函数,就像是一个数据组合体char name20;int hp;int grade;Class CRoleManggerpublic:CRoleMangger()CRoleMangger()public:void setRoleNmae(Role* role) cout role-name; /指针 ; 若用引用:void setRoleNmae(Role& role) cin ; ,下面rm.setRoleNmae(&role1)改为rm.setRoleNmae(role1);void setRoleHealth(Role* role) cout role-hp; void setRoleGrade(Role* role) cout role-grade; void print(Role* role)cout role名称: name , role生命值: hp , role等级: grade endl;Int main()CRoleMangger rm;Int iState = 1;while (iState) /循环判断Role role;rm.setRoleNmae(&role);rm.setRoleHealth(&role);rm.setRoleGrade(&role);rm.print(&role);cout 继续请按1,退出请按0! iState;/*Role role1;rm.setRoleNmae(&role1);rm.setRoleHealth(&role1);rm.setRoleGrade(&role1);rm.print(&role1);Role role2;rm.setRoleNmae(&role2);rm.setRoleHealth(&role2);rm.setRoleGrade(&role2);rm.print(&role2);*/system(pause);return 0;6、在一个RPG游戏中,有5个角色,每个角色有3个属性,(定义一个角色的类包含三个成员变量名称、生命值与等级,三个查询属性值的成员函数)Class CRolepublic: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 name16;int hp;int grade;void CRole:setRolename() cout name;void CRole:setRoleHealth() cout hp; Void CRole:setRoleGrade() cout grade;void CRole:print()cout roled1的名称: name , role1的生命值: hp , role1的等级: grade endl;Int main()CRole role1;role1.setRolename();role1.setRoleHealth();role1.setRoleGrade();role1.print();system(pause);return 0;7、利用文件流 将(6)中的数据输出到 外部文本中,如:data.txt class CRolepublic: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 name16;int hp;int grade;void CRole:setRolename() cout name;void CRole:setRoleHealth() cout hp; Void CRole:setRoleGrade() cout grade;void CRole:print()ofstream outfile(data.txt, ios:app); /利用文件流 将(6)中的数据输出到 外部文本中outfile roled1的名称: name , role1的生命值: hp , role1的等级: grade endl;outfile.close();int main()CRole role1;role1.setRolename();role1.setRoleHealth();role1.setRoleGrade();role1.print();return 0;8、编写一个程序,已有若干个学生数据,这些数据包括学号、姓名、/语文成绩、数学成绩与英语成绩,求各门功课的平均分。要求设计不同的成员函数求出各门课程的平均分,并使用成员函数指针调用它们Class CStudentpublic: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 name20;int Number;int ChineseGrade3;int MathGrade3;int EnglisGrade3;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 name20;int CStudent:getStudentNumber()return Number;Void CStudent:ChineseMeanNumber()Int ChineseGrade3 = 90,80,85;ChineseMeanGrade = (ChineseGrade0 + ChineseGrade1 + ChineseGrade2) / 3;Void CStudent:MathMeanNumber()Int MathGrade3 = 60, 60, 90 ;MathMeanGrade = (MathGrade0 + MathGrade1 + MathGrade2) / 3;void CStudent:EnglishMeanNumber()Int EnglishGrade3 = 70, 70, 70 ;EnglisMeanGrade = (EnglishGrade0 + EnglishGrade1 + EnglishGrade2) / 3;void CStudent:LessonMeanNumber()LessonMeanGrade = (ChineseMeanGrade + MathMeanGrade + EnglisMeanGrade) / 3;Void CStudent:print()cout 学生姓名: name , n学生学号= Number , n学生语文平均成绩= ChineseMeanGrade , n学生数学平均成绩: MathMeanGrade , n学生英语平均成绩: EnglisMeanGrade , n学生各科的平均成绩: LessonMeanGrade setStudentName(程序员);pStudent-setStudentNumber(20141111);pStudent-ChineseMeanNumber();pStudent-MathMeanNumber();pStudent-EnglishMeanNumber();pStudent-LessonMeanNumber();pStudent-print();delete pStudent;pStudent = NULL;system(pause);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日起的天数转换为对应的日期classDateprivate:intyear,month,day;public:Date()year=0;month=0;day=0;/默认构造函数Date(intx,inty,intz)year=x;month=y;day=z;/重载构造函数voidadd(intm);/加天数voiddel(intm);/减天数intdiff(Date& q);/日期差voiddisplay();/显示;voidDate:add(intm)intd12=31,28,31,30,31,30,31,31,30,31,30,31,temp,f;/d为12个月每个月天数的数组f=0;while(m0)if(year%100=0)d1 = (year%400=0?29:28);/如果是闰年,2月天数为29elsed1 = (year%4=0?29:28);/如果是闰年,2月天数为29temp=dmonth-1-day;if(temp=m)/如果所加天数未超过当月剩余天数day=day+m;break;m-=temp;day=0;month+;for(;month=m)day+=m;break;elsem-=dmonth-1;if(month0)if(year%100=0)d1 = (year%400=0?29:28);elsed1 = (year%4=0?29:28);if(day=m)day=day-m;break;m-=day;month-;for(;month=1;month-)if(dmonth-1=m)day=dmonth-1-m;break;elsem-=dmonth-1;if(month=1)break;month=12;year-;day=31;intDate:diff(Date& q)intdifferece;intd12=31,28,31,30,31,30,31,31,30,31,30,31,m,i;Datetemp;Date*pSmall,*pBig;if(year=q.year)/如果年相同if(month=q.month)/若月相同differece = q.day-day;else/月不同if(monthq.month)/让pSmall指针指向小日期,pBig指针指向大日期pSmall = &q;pBig =this;elsepSmall =this;pBig = &q;temp.month=pSmall-month;temp.day=pSmall-day;for(i=1;imonth & temp.day=pBig-day)differece=i;break;differece=(monthq.month?-differece:differece);else/年份不同if(yearq.year)/让pSmall指针指向小日期,pBig指针指向大日期pSmall = &q;pBig =this;elsepSmall =this;pBig = &q;temp.year=pSmall-year;temp.month=pSmall-month;temp.day=pSmall-day;m=pBig-year-pSmall-year;for(i=(m-1)*365;imonth & temp.day=pBig-day)differece=i-(m-1)*365+1;break;differece=(yearq.year?-differece:differece);returndifferece;voidDate:display()printf(%d-%d-%dn,year,month,day);/主函数演示voidmain()Dated(2013,5,21);printf(原日期t1:);d.display();d.add(73);printf(t2=t1+73:);d.display();d.del(73);printf(t3=t2-73:);d.display();printf(2013-5-21与2014-5-21日相差%d天n,d.diff(Date(2014,5,21);10、设计一个点类Point,再设计一个矩形类,矩形类使用Point类的两个坐标点作为矩形的对角顶点。并可以输出4个坐标值与面积。使用测试程序验证程序。class CPointpublic:CPoint() iX = 0; iY = 0; CPoint(int a,int b) iX = a; iY = b; void setXY(int a, int b) iX = a; iY = b; int getX() return iX; int getY() return iY; CPoint()private:int iX, iY;Class CRectpublic:CRect()C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论