欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    面向对象程序设计试卷A答案及评分标准.doc

    • 资源ID:66775802       资源大小:70KB        全文页数:14页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    面向对象程序设计试卷A答案及评分标准.doc

    面向对象程序设计试卷A答案及评分标准本试卷共10个题,分别按以下标准评分,最后根据整个答题的情况,从程序设计风格的角度给予0-5分的附加分。1、编写程序,将从键盘读入的所有大小写字母写入名为a.txt的文件中(遇EOF结束)。(本题总分10分,fopen函数使用妥当4分,读入过程正确4分,关闭文件2分。程序结构完整,有不妥之处,酌情扣分。)#include <stdio.h>main ( )FILE *fptr;fptr = fopen("a.txt","w");if (fptr=NULL)return 0;char a;a=getchar( );while(a!=EOF )if(a>=a && a<=z | a>=A && a<=Z) fputc(a,fptr);a = getchar();fclose(fptr);return 0;2、定义一个矩形类Rectangle,并在main函数中用它声明一个矩形对象,然后利用接口设置该矩形对象的长和宽、计算面积并输出。(本题总分10分,类结构2分,设置矩阵对象的长与高各1分,计算面积函数2分,输出函数2分,主函数2分。程序结构完整,有不妥之处,酌情扣分。)#include <stdio.h>#include <iostream.h>class Rectanglepublic: int getArea(); void setWidth(int w); void setLength(int l); private:int Length;int Width;int Rectangle:getArea() return Length*Width;void Rectangle:setLength(int l) Length=l;void Rectangle:setWidth(int w) Width=w;main() int len,wid; Rectangle r1; cout<<"Input the Rectangle's Information"<<endl; cout<<"Lentgh:"<<endl; cin>>len; cout<<"Width:"<<endl; cin>>wid; r1.setLength(len); r1.setWidth(wid); cout<<"Rectangle's Area:"<<r1.getArea()<<endl; return 0;3、定义一个整数栈类IStack,并用该类声明一个整数栈对象istack,往该对象压入整数6、7、8,然后逐一弹栈输出。(本题总分10分,类结构2分,构造、析构函数各1分,压栈、出栈函数实现2分,主函数2分。程序结构完整,有不妥之处,酌情扣分。)#include <stdio.h>#include <iostream.h>struct Node int item;struct Node *next;class IStack public:IStack();IStack();void push(int item);int pop();int getItemNum();private:Node *head;int size;IStack:IStack()head = NULL;size = 0;IStack:IStack()Node *temp = head;while (temp != NULL) temp = head->next; delete head;head = temp;void IStack:push(int item)Node *temp = new Node;temp->item = item;temp->next = head;head = temp;size+;int IStack:pop()if (size = 0) cout<<"No Item in the stack!n"return 0;Node *temp = head;head = head->next;int i = temp->item;delete temp;return i;int IStack:getItemNum() return size;main() IStack istack; istack .push(6); istack .push(7); istack .push(8); cout<<istack .pop( )<<endl; cout<<istack .pop( )<<endl; cout<<istack .pop( )<<endl; return 0;4、定义分数类Rational,要求在private部分用整数表示分子和分母,分子和分母以简化形式表示,即24/36应该以2/3的形式表示,并实现如下功能:(1) 两个分数对象可以用*相乘,结果表示为简化形式;(2) 按a/b的形式输出分数的值,a、b为整数。最后在main函数中对上述功能进行测试。(本题总分10分,类结构2分,分数相乘实现函数2分,化简函数实现2分,输出格式转化函数2分,主函数2分。程序结构完整,有不妥之处,酌情扣分。)#include <stdio.h>#include <iostream.h>class Rationalpublic:Rational(int num1=1,int num2=1);Rational operator*(Rational r1); void showNomal();private:int up;int down;int Minmultiple(int a,int b); /最小公倍数int Maxdivisor(int a,int b);/最大公约数;Rational:Rational(int num1,int num2) up=num1; down=(num2=0)?1:num2; int i; i=Maxdivisor(up,down); up=up/i; down=down/i;int Rational:Maxdivisor(int a,int b) int temp; int remainder; if(a<b) temp=a;a=b;b=temp; remainder=a%b; while(remainder!=0) a=b;b=remainder;remainder=a%b; return b;int Rational:Minmultiple(int x,int y) return x*y/Maxdivisor(x,y);Rational Rational:operator*(Rational r1) int Ndown,Nup,i; Ndown=down*r1.down; Nup=up*r1.up; i=Maxdivisor(Nup,Ndown); return Rational(Nup/i,Ndown/i);void Rational:showNomal() cout<<up<<"/"<<down<<endl;main() Rational r1(4,14); Rational r2(5,8); Rational r; cout<<"The r1 is:"<<endl; r1.showNomal(); cout<<"The r2 is:"<<endl; r2.showNomal(); r=r1*r2; cout<<"The r1*r2 is:"<<endl; r.showNomal(); return 0;5、定义包含时、分、秒信息的时间类Time,并实现时间对象的流输入输出,格式为时:分:秒,如23:35:18。(本题总分10分,类结构4分,输入输出函数实现各2分,主函数2分。程序结构完整,有不妥之处,酌情扣分。)#include "time.h"#include <iostream.h>class Time friend ostream & operator<<(ostream &output, Time &t);friend istream & operator>>(istream &input, Time &t);public:Time(int h=0, int m=0, int s=0);private:int hour, minute, second;Time:Time(int h, int m, int s)hour=h;minute=m;second=s;ostream & operator<<(ostream &output, Time &t)output << t.hour << ":" << t.minute << ":" << t.second << endl;return output;istream & operator>>(istream &input, Time &t)char a,b;input >> t.hour >> a >> t.minute >> b >> t.second ;return input;int main()Time t;cout << "Please input the time hh:mm:ss: " << endl;cin >> t;/调用自己定义的运算符重载函数operator>>(cin,t)cout << "your input time is: " << endl;cout << t << endl;/调用自己定义的运算符重载函数operator<<(cout,t)return 0;6、对于下面的类MyString,要求重载一些运算符后可以计算表达式:a = b + c,其中a、b、c都是类MyString的对象,+用以实现两个字符串对象的连接。请重载相应的运算符并编写程序测试。(本题总分10分,类结构4分,重载函数实现4分,主函数2分。程序结构完整,有不妥之处,酌情扣分。)class MyString public:MyString(char *s) str = new charstrlen(s)+1;strcpy(str, s);MyString() delete str;private:char *str;7、下面是一个形状类Shape,请编写类Shape的派生类:圆类Circle、三角形类Triangle和矩形类Rectangle,并重定义基类的成员函数使之返回正确的结果(show函数要输出对象的基本信息),然后编写程序测试它们。(本题总分10分,三个类的实现各3分,主函数1分。程序结构完整,有不妥之处,酌情扣分。)class Shape public:/图形的面积double area() return 0.0;/输出对象的信息void show() cout<<"Shape Object: "<<endl;#include <iostream.h>#include <math.h>class Circle:public Shapepublic:Circle(double xn,double yn,double rn) x=xn;y=yn;r=rn;double area()return 3.14*r*r; void show() cout<<"Circle Object:"<<endl; cout<<"圆心坐标:x"<<xn<<"y"<<yn<<"半径r="<<r<<endl;private:double x,y,z;class Triangle:public Shapepublic:Triangle(double an,double bn,double cn) a=an;b=bn;c=cn;double area()double t=0.5*(a+b+c);return splow(t*(t-a)*(t-b)*(t-c);void show()ccut<<"Triangle:"<<endl;cout<<"三边分别为"<<a<<b<<c<<endl;private:double a,b,c;class Rectangle:public Shapepublic:Rectangle(double an,double bn)a=an;b=bn;double area()return a*b;void show()cout<<"Rectangle Object"<<endl;cout<<"长:"<<a<<"宽:"<<b<<endl;private:double a,b;int main()Circle circle(1.0,1.0,1.0);Triangle triange(1.0,1.0,1.0);Rectangle rectangle(1.0,1.0,1.0);circle.show();triange.show();rectangle.show();return 0;8、修改上题的形状类Shape,并编写计算不同图形的面积总和的函数,该函数在增加新的图形后不必修改。最后编写程序测试它们。(本题总分10分,类结构6分,其中求面积总和函数声明4分;主函数4分。程序结构完整,有不妥之处,酌情扣分。)#include <iostream.h>int n=0;class shapevirtual double area() const=0; 虚函数friend addarea(shape &a) 用addarea(shape *)用shape*指针进行动态绑定 nt=a.area();int main()Circle a(1.0,1.0,1.0);Triagle b(1.0,1.0,1.0);Rectangle c(1.0,1.0,1.0);shape * a1;shape * b1;shape * c1;a1=&a;b1=&b;c1=&c;addarea(a1);addarea(b1);addarea(c1);cout<<n;return 0;9、编写一个函数模板,实现将任意数组的元素倒置,即将数组的首尾逆转。并编写一个使用该模板的main函数,分别实现一个有10个整数(int)的数组和一个有20个实数(float)的数组的倒置。(本题总分10分,模板声明2分,逆转函数实现4分,主函数实现4分。程序结构完整,有不妥之处,酌情扣分。)#include <iostream.h>template <class Tname>void change(Tname a,int n)Tnamen b=new namen+1;for(int i=0;i<n;i+)bi=an-i-1;a=b;delete b;int main()int a10;for(int i=0;i<10;i+)ai=i;float b20;for(float n=0.0,n<20;n+)bn=n;change(a,10);change(b,20);for(int i=0;i<10;i+)cout<<ai<<"t"for(i=0;i<20;i+)cout<<bi<<"t"return 0;10、编写一个用于英语单词学习的系统,按照如下步骤进行:(1) 编写类Eword,类Eword的对象表示一个英文单词以及它的含义、应用示例;(2) 为类Eword添加显示对象信息的成员函数;(3) 为类Eword添加保存对象到文件以及从文件恢复对象的成员函数;(4) 编写类WordList,以链表或数组的方式管理类Eword的多个对象;(5) 为类WordList添加查询一个单词的成员函数;(6) 为类WordList添加插入一个单词(类Eword的对象)的成员函数;(7) 为类WordList添加逐个显示英语单词的成员函数;(8) 编写程序利用上述两个类借助文件管理自己要学习的英语单词;(9) 对程序进行进一步的优化,如为已经记住的单词添加标记,下次不再显示等,使系统更加实用。(本题总分10分,第1小题至第7小题各一分,第8题2分,第9题1分。程序结构完整,有不妥之处,酌情扣分。)class Eworld public Eword(char *a,char *hanyi,char *shili)word=new charstrlen(a)+1;strcpy(word,a);h=new charstrlen(hanyi+1);strcpy(h,hanyi); s=new charstrlen(shiyi+1);strcpy(s,shili);void show() /显示单词及含义,示例cout<<word<<endl;cout<<h<<endl;cout<<s<<endl;void showwold() /显示单词cout<<word<<endl;void save(ifstream &infile) /保存到文件infile.write(*this,sizeof(*this),1);void recovery(ofstream &outfile)/从文件中恢复outfile.read(*this,sizeof(*this),1);private:char *word;char *h;char *s;int flag;class WordListpublic:int add(Eword *a) /添加单词if(n=nCount)return 0;else list+n=a;return 1;int find(char *a) /查找单词for(int i=0;i<n;i+)if(strcmp(Listi.word,a)=0)return i;return -1;void Lshow() /显示所有单词for(int i=0;i<n;i+)listi.showword();void Lshow2() /显示未记住的单词for(int i=0;i<n;i+)if(listi.flag!=1)listi.show();privateint nCount;int n;Eword list;WordList(int a) /初始化容量nCount,已记录单词数n; nCount=a;n=0;list=new Eworda;SetFlag(int n)flag=n;测试方法:先声明一个WordList对象,初始化容量,再添入单词,用Setflag标记单词或重新标记。

    注意事项

    本文(面向对象程序设计试卷A答案及评分标准.doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开