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

下载本文档

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

文档简介

1、桂林电子科技大学试卷2010-2011 学年第 2 学期 A卷课号 课程名称 程序设计与问题求解2 适用班级(专业) 考试时间 120 分钟 座位号 学号 姓名 题号一二三四五六七八成绩满分502030得分评卷人一、阅读程序,写出程序运行结果(每题10分,5题共50分)1结构体# include # include using namespace std;struct Worker char name15; / 姓名 int age; / 年龄 float pay; / 工资;void main() Worker Worker1,Worker2; char *t=liouting; int d

2、=38;float f=493; strcpy(W,t); Worker1.age=d; Worker1.pay=f; cout W Worker1.age Worker1.payendl;Worker2=Worker1; cout W Worker2.age Worker2.payendl;输出结果是:liouting 38 493liouting 38 4932构造函数与析构函数#include using namespace std;class TAddprivate:int x, y;public:TAdd(int a,

3、 int b): x(a), y(b)cout 调用构造函数1. endl;TAdd(TAdd &p)x=p.x;y=p.y;cout 调用构造函数2. endl;TAdd( )cout 调用析构函数. endl;int add( ) return x+y; ;void main( )TAdd p1(2, 3);TAdd p2=p1;cout p2.add( ) endl;输出结果是:调用构造函数1.调用构造函数2.5调用析构函数.调用析构函数.3虚函数#include using namespace std;class Apublic:virtual void f()coutA:f() ex

4、ecutingn;class B:public Apublic:void f()coutf();p = &b;p-f(); a=b;a.f();输出结果是:B:f() executingA:f() executingB:f() executingA:f() executing4模板#include using namespace std;template class myclassprivate:Type1 i;Type2 j;public:myclass(Type1 a, Type2 b)i=a; j=b; void show() couti jendl; ;void main()mycla

5、ss ob1(1,3); myclass ob2(10,0.23);myclass ob3(A,This is a test);ob1.show();ob2.show();ob3.show();输出结果是:1 310 0.23A This is a test5继承#includeusing namespace std;class A int x,y;public:A(int x1=0, int y1=0):x(x1),y(y1)coutA:x yn;A() coutA des!n;class B int i;public:B(int ii) i = ii; coutB con!n;B()cou

6、tB des!n;class C:public A,public Bpublic:C (int cx,int cy, int bi):A(cx,cy),B(bi) coutA with B con!n;C () coutA with B des!n;int main()C cm(3,4,5);输出结果是:A:3 4B con!A with B con!A with B des!B des!A des!二、程序填空(每题10分,2题共20分)1. 词频统计:输入一系列英文单词,单词之间用空格隔开,用“xyz”表示结束输入,统计输入过哪些单词以及各单词出现的次数,统计时区分大小写字母,最后按单词的

7、字典顺序输出单词和出现次数的对照表。#include #include using namespace std;/ 词条类型struct WordListchar word50;int freq;/ 词典排序函数void Sort(WordList list, int count)for(int i=0; ii; j=j-1)if(strcmp(listj-1.word,listj.word)0)WordList tmp;tmp=listj-1;listj-1=listj;listj=tmp;/ 主函数:进行词频统计int main()WordList list5000;int i, num=

8、0;char temp50;cout请输入一系列英语单词,以xyz表示输入结束temp;while( (1) ) for(i=0; i=num) / 若词典中无该词条,添加该词strcpy(listi.word, temp); (3) (4) (5) / 继续输入单词Sort(list, num);/ 对词典进行排序/ 输出词典cout词频统计结果如下:endl;for(i=0; inum; i+)coutlisti.wordtlisti.freqtemp;2带头结点链表类的定义如下:#include#includeusing namespace std; template /模板声明clas

9、s NODE /结点类定义public: datatype data; /数据域 NODE *next; /指针域;templateclass List /单链表类定义private:NODE *head; /链表头指针 public:List(); /构造函数创建头结点 int length(); /求表长函数bool isempty() return head-next=NULL?true:false; /判空链表函数 bool insert_data(datatype data,int i); /插入元素函数 List(); /析构函数;templatebool List:insert_

10、data(datatype data,int i) /定义插入函数 NODE *current,*previous,*newnode;int j=1;if(ilength()+1)|(i0) /判插入位置的合法性cout插入位置不正确,不能插入!n;return false;newnode=new NODE; /申请新结点空间if(newnode=NULL) /判表满否coutdata=data;newnode-next=NULL;previous=head; (6) while( (7) ) /寻找第i个元素previous=current; (8) /指向下一个结点j+; /链入新结点 (

11、9) (10) return true;答案:(6)current=head-next;(7) current!=NULL&jnext;(9) newnode-next=current;(10) previous-next=newnode;三、程序设计(每题15分,2题共30分)1设计一个时间(Time)类,设计多个重载的构造函数,可以设置时间,时间加运算(时间加多少秒),要求重载+来实现时间加运算,按24小时制格式:时:分:秒输出时间。并在主程序中测试所有的操作。(15分)#pragma once/*时间类*/class Timeint second ,minute ,hour;int Ge

12、tSecond(); /计算总秒数void SetTime(int ss); /根据秒数算出second ,minute ,hour public:Time();Time(int hh,int mm,int ss);void SetTime(int hh,int mm,int ss); const Time &operator+(int ss);bool operator(Time &);void Print_hms(); /HH:mm:ss ;#include Time.h#include using namespace std;Time:Time() second=0; minute=0;

13、 hour=0;Time:Time(int hh,int mm,int ss) SetTime(hh,mm,ss);/计算总秒数int Time:GetSecond() return second+60*minute+3600*hour;void Time:SetTime(int ss) second=ss%60; ss=ss/60; minute=ss%60; ss=ss/60; hour=ss%24;void Time:SetTime(int hh,int mm,int ss) second=(ss=0&ss=0&mm=0&hh24)?hh:0;const Time & Time:oper

14、ator+(int ss) SetTime(GetSecond()+ss); return *this;bool Time:operator (Time &time)if(GetSecond()-time.GetSecond()0)return true;else return false;void Time:Print_hms()couthour:minute:secondendl;#include Time.h#include using namespace std;int main()Time t1,t2;int hour,minute,second;cout请输入时间(时分秒):hou

15、rminutesecond;t1.SetTime(hour,minute,second);t1.Print_hms(); t2.SetTime(12,0,0);if(t1t2)coutendl是上午的时间endl;else coutendl是下午的时间endl; return 0;评分说明:数据成员定义2分,函数定义5分,函数实现5分,主程序测试3分2编写一个雇员和雇主数据输入和显示的程序。雇员数据有编号(no)、姓名(name)和工资(salary),雇主数据有编号(no)、姓名(name)和职位(post)。要求将编号、姓名输入和显示设计成一个类person,并作为雇员数据类employe

16、e和雇主数据类employer的基类,并编写主程序进行执行,输出信息时体现运行多态性,并给出执行结果。(15分)答案:#includeusing namespace std;class person int no; char name10; public: virtual void input() coutno; coutname; virtual void output() coutthe no is noendl; coutthe name is nameendl; ;class employee: public person int salary;public: void input()

17、 person:input(); coutsalary; void output() person:output(); coutthe employee salary is salaryendl; ;class employer: public person char post10;public: void input() person:input(); coutpost; void output() person:output(); coutthe employer post is postinput(); p-output(); p=&er; p-input(); p-output();输出结果:the no is 01the name is wanghongthe employee salary is 1000the no is 1the name is wan

温馨提示

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

评论

0/150

提交评论