201509考试批次《面向对象程序设计》(结课作业)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

201509考试批次《面向对象程序设计》结课作业学生姓名学习中心学习中心学号考号专业计算机科学与技术年级层次专科起点本科北京语言大学网络教育学院《面向对象程序设计》结课作业注意:本学期所布置的结课作业,请同学一律按照以下要求执行:一、学生必须预约才能在学生平台看见相关课程的“结课作业”按钮;二、提交路径:个人平台首页--学习中的课程,点击该课程名称--点击“结课作业”--点击“浏览”按钮,选择要上传的文档后点击“提交作业”即可。三、结课作业提交起止时间:2015年8月1日—9月7日。(届时平台自动关闭,逾期不予接收。)四、提交的文档格式必须为word文档,截止日期前可多次提交,平台只保留最后一次提交的文档;五、严格按照课程名称提交相应课程结课作业,提交错误的结课作业,按0分处理。 一、【程序分析题】(本大题共5小题,请任选其中一道题作答,答题时请注明题号,本题30分,本题要求读懂题目中的程序或函数,写出程序或函数的功能)1、#includeiostream.hvoidmain(){inti,s=0;for(i=2;i=30;i+=2)s+=i*i;couts=sendl;}答:程序的功能是:计算并输出22+42+62+„„+302的值2、ints1(intn){intx;if(n==1)x=1;elsex=s1(n-1)+n*n;returnx;}答:函数的功能是:通过递归调用函数S1求得1+22+32+….+n2的值3、voidfun5(char*a,constchar*b){while(*b)*a++=*b++;*a=0;}答:实现字符串系统函数strcpy的功能,把b所指的字符串拷贝到a所指的字符数组空间中。4、voidfun3(inta[][N],intm,intn,int&row,int&col){intx=a[0][0];row=col=0;for(inti=0;im;i++)for(intj=0;jn;j++)if(a[i][j]x){x=a[i][j];row=i;col=j;}}答:函数的功能是:找出数组中最大数所在的行和列5、char*f8(char*str1,constchar*str2){inti=0,j=0;while(str1[i])i++;while(str2[j])str1[i++]=str2[j++];str1[i]='\0';returnstr1;}答:函数的功能是:把str2链接到str1后面。二、【编写程序实现算法】(本大题共5小题,请任选其中一道题作答,答题时请注明题号,本题30分,根据题目要求编写算法实现,要求程序没有语法错误)1、按照函数原型语句“voidp(intn);”编写一个递归函数显示出如下图形,此图形是n=5的情况。555554444333221答:voidp(intn){if(n!=0){for(inti=0;in;i++)coutn;coutendl;p(n-1);}}2、按照函数原型语句“voidp(intn);”编写一个递归函数显示出如下图形,此图形是n=5的情况。122333444455555voidp(intn){if(n==1){printf(1\n);return;}else{p(n-1);for(inti=1;i=n;i++){printf(%d,n);}printf(\n);}}voidmain(){p(5);}3、按照下面函数原型语句编写一个递归函数计算出数组a中n个元素的平方和并返回。intf(inta[],intn);int f(int a[],int n)  {if(n=0) return 0;  else return(f(a,n‐1)+a[n‐1]*a[n‐1]); } 4、根据下面类中MaxMin函数成员的原型和注释写出它的类外定义。classAA{int*a;intn;intMS;public:voidInitAA(intaa[],intnn,intms){if(nnms){coutError!endl;exit(1);}MS=ms;n=nn;a=newint[MS];for(inti=0;in;i++)a[i]=aa[i];}intMaxMin(int&x,int&y);//从数组a的前n个元素中求出//最大值和最小值,并分别由引用参数x和y带回,//同时若n大于0则返回1,否则返回0。};答:int AA::MaxMin(int& x, int& y)        {         int mx,my;         mx=my=a[0];         for(int i=1; in; i++) {                if(a[i]mx) mx=a[i];          if(a[i]my) my=a[i];         }         x=mx; y=my;         if(n0) return 1; else return 0;        }5、如果A和B都是m行n列矩阵,且它们对应元素相等,则A= =B。试定义矩阵类, 对“= =”运算符重载。 #includeiostream  using namespace std;  const int M=3;  const int N=3;   class Matrix {  private:   int X[M][N];  public:    friend int operator==(Matrix &A,Matrix &B); };   int operator==(Matrix *A,Matrix *B) {   int i,j;   for(i=0;iM;i++)    for(j=0;jN;j++)    { if(A[i][j]!=B[i][j])      return 0;  }    return 1; }  三、【程序设计题】(本大题共5小题,请任选其中一道题作答,答题时请注明题号,本题40分,根据题目要求编写完整程序实现,要求程序能够正常运行,没有语法错误)1、编写一个程序,计算三角形、正方形和圆形三种图形的面积和周长。(用多态性实现)#include#includeiostreamusingnamespacestd;classShape{private:public:virtualdoubleS()=0;virtualdoubleC()=0;};classTri:publicShape{private:doubler1,r2,r3;public:Tri(doubled1=0,doubled2=0,doubled3=0):r1(d1),r2(d2),r3(d3){};doubleS(){return(sqrt(0.5*(r1+r2+r3)*0.5*(r1-r2+r3)*0.5*(r1+r2-r3)*0.5*(-r1+r2+r3)));}doubleC(){return(r1+r2+r3);}};classQua:publicShape{private:doubleside;public:Qua(doubless):side(ss){};doubleS(){return(ss*ss);}doubleC(){return(4*ss);}}classCir:publicShape{private:doublerad;public:Cir(doubledd):rad(dd){};doubleS(){return(3.14*rad*rad);}doubleC(){return(2*3.14*rad);}};intmain(){Shape*a=newTri(3,4,5);Shape*b=newCir(2);Shape*d=newQua(4);couta-C()endl;couta-S()endl;coutb-C()endl;coutb-S()endl;coutd-C()endl;coutd-S()endl;return0;};2、已有若干个学生数据,包括学号、姓名、成绩,编写程序要求输出这些学生数据并计算平均分。#include#includeiostreamclassstudent{public:intno;char*name;intdeg;student();~student();voiddisplay();};staticintsum,num=3;staticintavg(intsum);voidmain(){intaver;studentstu[3];stu[0].no=1;stu[0].name=li;stu[0].deg=89;stu[1].no=2;stu[1].name=chen;stu[1].deg=78;stu[2].no=3;stu[2].name=zheng;stu[2].deg=94;for(inti=0;i3;i++){stu[i].display();sum+=stu[i].deg;}coutthesumis:aver=avg(sum);couttheaverageis:}student::student(){no=0;name=(char*)malloc(sizeof(char)*8);deg=0;}student::~student(){free(name);}voidstudent::display(){cout}staticintavg(intsum){intaver;aver=sum/num;returnaver;}3、应用C++的多态性编写一个程序,编写程序计算正方体、球体和圆柱体的表面积和体积。 #includeiostream using namespace std;  #define n 3.14  class Shuju {  public:   virtual void biaomianji()=0;   virtual void tiji()=0;  };  class zhengfangti:public Shuju {  public:   zhengfangti(int a){this‐a=a;}   void biaomianji();   void tiji();  private:   int a   };  void zhengfangti::biaomianji()  {   cout正方形的表面积为6*a*aendl;  }  void zhengfangti::tiji()  {   cout正方形的体积为a*a*aendl;  }  class qiuti:public Shuju {  public:   qiuti(int b){this‐b=b;}   void biaomianji();   void tiji();  private:   int b   };  void qiuti::biaomianji() {   cout球体的表面积为4*n*b*bendl;  }  void qiuti::tiji() {   cout球体的体积为(4.0/3.0)*n*b*b*bendl;  }  class yuanzhuti:public Shuju {  public:   yuanzhuti(int r,int d){this‐r=r;this‐d=d;}   void biaomianji();   void tiji();  private:   int r,d;  };  void yuanzhuti::biaomianji()  {   cout圆柱体的表面积为2*n*r*r+2*n*r*dendl;  }  void yuanzhuti::tiji()  {   cout圆柱体的体积为n*

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功