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

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

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

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

资源描述

201709考试批次《面向对象程序设计》结课作业学生姓名学习中心学号专业年级层次北京语言大学网络教育学院《面向对象程序设计》结课作业注意:本学期所布置的结课作业,请同学一律按照以下要求执行:1)结课作业提交起止时间:2017年8月2日--9月11日。(届时平台自动关闭,逾期不予接收。)2)结课作业课程均需通过“离线作业”栏目提交电子版,学院不收取纸介的结课作业,以纸介回寄的作业一律视为无效;3)截止日期前可多次提交,平台只保留最后一次提交的文档,阅卷时以最后一次提交的结课作业为准,截止日期过后将关闭平台,逾期不交或科目提交错误者,按0分处理;4)提交文档要求:提交的文档格式为doc、rar,大小10M以内;5)必须严格按照每门课程的答题要求完成作业,没有按照学院要求来做的结课作业,将酌情扣分。一、【程序分析题】(本大题共5小题,请任选其中一道题作答,答题时请注明题号,本题30分,本题要求读懂题目中的程序或函数,写出程序或函数的功能)1、#includeiostream.hvoidmain(){inti,s=0;for(i=2;i=30;i+=2)s+=i*i;couts=sendl;}答:计算并输出2^2+4^2+6^2+....+30^2的值2、ints1(intn){intx;if(n==1)x=1;elsex=s1(n-1)+n*n;returnx;}答:函数的功能是:通过递归调用函数S1求得1^2+2^2+3^2+….+n^2的值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的情况。122333444455555答:voidp(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);答:intf(inta[],intn){if(n=0)return0;elsereturn(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。};答:intAA::MaxMin(int&x,int&y){intmx,my;mx=my=a[0];for(inti=1;in;i++){if(a[i]mx)mx=a[i];if(a[i]my)my=a[i];}x=mx;y=my;if(n0)return1;elsereturn0;}5、如果A和B都是m行n列矩阵,且它们对应元素相等,则A==B。试定义矩阵类,对“==”运算符重载。答:#includeiostreamusingnamespacestd;constintM=3;constintN=3;classMatrix{private:intX[M][N];public:friendintoperator==(Matrix&A,Matrix&B);};intoperator==(Matrix*A,Matrix*B){inti,j;for(i=0;iM;i++)for(j=0;jN;j++){if(A[i][j]!=B[i][j])return0;}return1;}三、【程序设计题】(本大题共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++的多态性编写一个程序,编写程序计算正方体、球体和圆柱体的表面积和体积。答:#includeiostreamusingnamespacestd;#definen3.14classShuju{public:virtualvoidbiaomianji()=0;virtualvoidtiji()=0;};classzhengfangti:publicShuju{public:zhengfangti(inta){this‐a=a;}voidbiaomianji();voidtiji();private:inta};voidzhengfangti::biaomianji(){cout正方形的表面积为6*a*aendl;}voidzhengfangti::tiji(){cout正方形的体积为a*a*aendl;}classqiuti:publicShuju{public:qiuti(intb){this‐b=b;}voidbiaomianji();voidtiji();private:intb};voidqiuti::biaomianji(){cout球体的表面积为4*n*b*bendl;}voidqiuti::tiji(){cout球体的体积为(4.0/3.0)*n*b*b*bendl;}classyuanzhuti:publicShuju{public:yuanzhuti(intr,intd){this‐r=r;this‐d=d;}voidbiaomianji();voidtiji();private:intr,d;};voidyuanzhuti::biaomianji(){cout圆柱体的表面积为2*n*r*r+2*n*r*dendl;}voidyuanzhuti::tiji(){cout圆柱体的体积为n*r*r*dendl;}voidfun(Shuju*ptr){ptr‐biaomianji();}voidfun1(Shuju*ptr){ptr‐tiji();}voidmain(){zhengfangtizheng(3);qiutiqiu(4);yuanzhutiyuanzhu(3,4);fun(&zheng);fun1(&zheng);fun(&qiu);fun1(&qiu);fun(&yuanzhu);fun1(&yuanzhu);}4、编写一个程序,实现图书和杂志销售管理。当输入一系列图书和杂志销售记录后,将销售良好(图书每月售500本以上,杂志每月2500本以上)的图书和杂志名称显示出来。答:#includeiostream#includestringusingna

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

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

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

×
保存成功