程序设计与问题求解_第1页
程序设计与问题求解_第2页
程序设计与问题求解_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、桂林电子科技大学试卷2010-2011 学年第 2 学期A卷课号课程名称 程序设计与问题求解2适用班级(专业)考试时间 120 分钟 座位号 学号 姓名题号-一-二二三四五六七八成绩满分50P 20 :30得分评卷人一、阅读程序,写出程序运行结果(每题 10分,5题共50分)1 结构体# in elude <iostream># in elude <stri ng.h>using n amespace std;struct Workerchar n ame15;/姓名int age; /年龄float pay; /工资;void mai n() Worker Worke

2、r1,Worker2;char *t="liout in g"int d=38;float f=493;strcpy(Worker1. name,t);Worker1.age=d;Worker1.pay=f;cout <<Worker1. name<<" "<<Worker1.age<<" "<<Worker1.pay<<e ndl;Worker2=Worker1;cout <<Worker2. name<<" "<

3、;<Worker2.age<<" "<<Worker2.pay<<e ndl;输出结果是:liout ing38493liout ing384932 构造函数与析构函数#in clude <iostream>using n amespace std;class TAddprivate:int x, y;public:TAdd(i nt a, i nt b): x(a), y(b)cout << " 调用构造函数 1." << endl;TAdd(TAdd &p)x=p.

4、x;y=p.y;cout << " 调用构造函数 2." << endl;TAdd()cout << " 调用析构函数."<< endl;int add( ) retur n x+y; ;void mai n()TAdd p1(2, 3);TAdd p2=p1;cout << p2.add( ) << en dl;输出结果是:调用构造函数1.调用构造函数2.5调用析构函数.调用析构函数.3虚函数#in clude <iostream>using n amespace st

5、d;class Apublic:virtual void f()cout<<"A:f() executi ngn"class B:public Apublic:void f()cout<<"B:f() execut in gn"void mai n()A a;B b;b.f();A* p = &a;p->f();p = &b;p->f();a=b;a.f();输出结果是:B:f() execut ingA:f() execut ingB:f() execut ingA:f() execut ing4.模

6、板#in clude <iostream>using n amespace std;template <class Type1,class Type2>class myclassprivate:Type1 i;Type2 j;public:myclass(Type1 a, Type2 b)i=a; j=b;void show()cout<<i<<" "<<j<<e ndl;void mai n()myclass<int, int> ob1(1,3);myclass<int, doubl

7、e> ob2(10,0.23); myclass<char, char*> ob3('A',"This is a test"); ob1.show();ob2.show();ob3.show();输出结果是:1 310 0.23A This is a test5.继承#in clude<iostream>using n amespace std;class Aint x,y;public:A(int x1=0, i nt y1=0):x(x1),y(y1)cout<<"A:"<<x&l

8、t;<' '<<y<<'n'A() cout<<"A des!n"class Bint i;public:B(int ii)i = ii;cout<<"B con !n"B()cout<<"B des!n"class C:public A,public Bpublic:C (in t cx,i nt cy, i nt bi):A(cx,cy),B(bi)cout<<"A with B con!n"C ()

9、cout<<"A with B des!n"int mai n()C cm(3,4,5);输出结果是:A:3 4B con!A with B con!A with B des!B des!A des!xyz ”表示结束输入,统计 最后按单词的字典顺序输二、程序填空(每题10分,2题共20分)1词频统计:输入一系列英文单词,单词之间用空格隔开,用“输入过哪些单词以及各单词出现的次数,统计时区分大小写字母,出单词和出现次数的对照表。#in clude <iostream>#in clude <cstri ng>using n amespace

10、 std;/词条类型struct WordListchar word50;int freq;/词典排序函数void Sort(WordList list, i nt count)for(i nt i=0; i<co unt; i=i+1)for(i nt j=co un t-1; j>i; j=j-1)if(strcmp(listj-1.word,listj.word)>0)WordList tmp;tmp=listj-1;listj-1=listj;listj=tmp;/主函数:进行词频统计int mai n()WordList list5000;int i, num=0;

11、char temp50;cout<<"请输入一系列英语单词,以xyz表示输入结束cin> >temp;while("<<e ndl;(1)for(i=0; i<num; i+)/扫描当前词典/若词典中存在该词条,词频加1if(strcmp(listi.word, temp)=O)(2)break; if(i>=num)/若词典中无该词条,添加该词strcpy(listi.word, temp);( 3)(4)(5)/继续输入单词Sort(list, num);/输出词典cout<<"词频统计结果如下:&q

12、uot;<<endl; for(i=0; i<num; i+)cout<<listi.word<<"t"<<listi.freq<<e ndl; return 0;/对词典进行排序答案:(1) strcmp(temp, "xyz")!=0(2) listi.freq +;(3) listi.freq =1;(4) num+;(5) cin>>temp;2.带头结点链表类的定义如下:#in clude<iostream>#in clude<cstdio>u

13、sing n amespace std; template<class datatype> class NODE/模板声明 结点类定义II数据域II指针域单链表类疋义II链表头指针构造函数创建头结点II求表长函数判空链表函数插入元素函数 public:datatype data; NODE<datatype> *n ext;;template<class datatype>class List/ private:NODE<datatype> *head; public:List();/int len gth();bool isempty() re

14、turn head->n ext=NULL?true:false; / bool in sert_data(datatype data,i nt i);/List();/析构函数定义插入函数判插入位置的合法性申请新结点空间 判表满否寻找第i个元素指向下一个结点;template<class datatype>bool List<datatype>:i nsert_data(datatype data,i nt i) /NODE<datatype> *curre nt,*previous,* newno de; int j=1;if(i>le ng

15、th()+1)|(i<0)II cout<<"插入位置不正确,不能插入! n" return false;newnode=new NODE<datatype>IIif(newn ode=NULL)II cout<<"内存无空闲空间,不能插入!n"return false;newno de->data=data;newno de->n ext=NULL;previous=head;(6while( (7)II previous=curre nt;(8) IIj+;II 链入新结点(9) (10) ret

16、urn true;答案:(6)curre nt=head->n ext; curren t!=NULL&&j<i(8) curre nt=curre nt->n ext;(9) newno de->n ext=curre nt;(10) previous->n ext =newno de;三、程序设计(每题15分,2题共30分)1 设计一个时间(Time)类,设计多个重载的构造函数,可以设置时间,时间加运算(时间 加多少秒),要求重载+来实现时间加运算,按24小时制格式:时:分:秒输出时间。并在主程序中测试所有的操作。(15分)#pragma on

17、ce/*时间类*/class Timeint sec ond ,minute ,hour;int GetSeco nd();/计算总秒数void SetTime(i nt ss);/根据秒数算出 seco nd ,mi nute ,hourpublic:Time();Time(i nt hh,i nt mm,i nt ss);void SetTime(i nt hh,i nt mm,i nt ss);const Time &operator+(i nt ss);bool operator<(Time &);void Prin t_hms(); HH:mm:ss;#in c

18、lude "Time.h"#in clude <iostream>using n amespace std;Time:Time()sec on d=0;minu te=0;hour=0;Time:Time(i nt hh,i nt mm,i nt ss)SetTime(hh,mm,ss);/计算总秒数int Time:GetSec on d()return seco nd+60*mi nu te+3600*hour;void Time:SetTime(i nt ss)sec on d=ss%60;ss=ss/60;min ute=ss%60;ss=ss/60;h

19、our=ss%24;void Time:SetTime(i nt hh,i nt mm,i nt ss)seco nd=(ss>=0&&ss<60)?ss:0;minu te=(m m>=0&&m m<60)?mm:0;hour=(hh>=0&&hh<24)?hh:0;const Time & Time:operator+(i nt ss)SetTime(GetSeco nd()+ss);return *this;bool Time:operator <(Time &time)if(Get

20、Seco nd()-time.GetSeco nd()<0)return true;elsereturn false;void Time:Pri nt_hms()cout<<hour<<":"<< minu te<<":"<<sec on d<<e ndl;#in clude "Time.h"#in clude <iostream>using n amespace std;int mai n()Time t1,t2;int hour,m inu

21、te,sec ond;cout<<"请输入时间(时分秒):"<<endl;cin> >hour> >minu te»sec ond;t1.SetTime(hour,m inu te,sec on d);t1.Prin t_hms();t2.SetTime(12,0,0);if(t1<t2)cout<<endl<<"是上午的时间"<<endl;elsecout<<endl<<"是下午的时间"<<endl

22、;return 0;评分说明:数据成员定义 2分,函数定义5分,函数实现5分,主程序测试3分2.编写一个雇员和雇主数据输入和显示的程序。雇员数据有编号(no )、姓名(name)和工资(salary),雇主数据有编号(no)、姓名(name)和职位(post)。要求将编号、姓名输 入和显示设计成一个类person,并作为雇员数据类employee和雇主数据类employer的基类,并编写主程序进行执行,输出信息时体现运行多态性,并给出执行结果。(15分)答案:#in clude<iostream>using n amespace std;class pers onint no;ch

23、ar n ame10;public:virtual void in put()cout<<"the no is "cin»no;cout<<"the n ame is "cin»n ame;virtual void output()cout<<"the no is "<<no <<e ndl; cout<<"the n ame is "<<n ame<<e ndl;;class employee: public pers onint salary;public:void in put()pers on:i nput();cout<<"the employee salary is " cin> >salary;void output()pers on :output(); cout<<"the employee

温馨提示

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

评论

0/150

提交评论