《C期末考试试题及答案.pdf》由会员分享,可在线阅读,更多相关《C期末考试试题及答案.pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+期末考试试题及答案20 0 2年春季软件学院C+期末考试试题及答案考试时间:1 20 分钟1.(1 0)分现有两种实体:“矩 形 (Re ct an g le)和“旗杆”(F lag p o le)其中,“矩形”的属性为长度与宽度,“旗杆”的属性为高度(指地面以上)和深度(指地面以下),且均为整数。若有:s t r u ct Re ct an g le in t le n g t h,w id t h;s t r u ct F lag p o le in t he ig ht,d e p t h;in t r e ct an g le A r e a(in t x,in t y)r e t
2、 u r n (x =0&y =0)?x*y:0;计算矩形的面积in t f lag p o le L e n g t h(in t x,in t y)r e t u r n (x =0&y =0)?x+y:0;计算旗杆的高度v o id f ()(s t r u ct Re ct an g le r e ct;s t r u ct F lag p o le f I g p;r e ct.le n g t h=20;r e ct.w id t h=5;f lg p.he ig ht=20;f lg p.d e p t h=5;in t ar e a=r e ct an g le A r e a
3、(r e ct.le n g t h,r e ct.w id t h);in t le n g t h=f lag p o le L e n g t h(f lg p.he ig ht,f lg p.d e p t h);)试续写函数f,以各举一例说明,对函数r e ct an g le A r e a和 f lag p o le L e n g t h的调用都可能出现语法上合法,但结果与函数的语义不一致的情况,并指出其原因。答案:续写的二句如下:ar e a=r e ct an g le A r e a(f I g p.he ig ht,f lg p.d e p t h);le n g t
4、h=f lag p o le L e n g t h(r e ct.le n g t h,r e ct.w id t h);原因:在函数调用时,只需实参和形参类型相容即可,而不管语义如何?如上例二句语法上是合法的,但结果与函数的语义不一致。若欲使该情况不发生,必须将数据及其上的操作绑定在一起,这必须用类来定义。2.(1 5 分)阅读下面的程序,写钳m ain 的输出。#in clu d e s t d io.hin t f(in t i,co n s t in t*j,in t&k)if(i%3=0)if(*j=6)k*=i;k+=i;k-=i;r e t u r n *j+k;)in t m
5、 ain()(in t i,j=l,k=2,m;f o r(i=0;i 1 0;i+,j*=2)m=f (i,&j,k);1p r in t f C i=%2d,j=%2d,k=%2d,m=%2d.n ,i,j,k,m);r e t u r n 0;答案:i=0,j=l,k=2,m=3.i=l,j=2,k=2,m=4.i=2,j=4,k=2,m=6.i=3,j=8,k=6,m=1 4.i=4,j=1 6,k=6,m=22.i=5,j=32,k=6,m=38.i=6,j=64,k=36,m=1 0 0.i=7,j=1 28,k=36,m=1 64.i=8,j=256,k=36,m=29 2.i=
6、9,j=51 2,k=324,m=8 36.3.(1 5 分)根据m ain 程序的输出结果,定义并实现m ax 函数。in t m ain()(co u t m ax=m ax(l.0,67.3)e n d l;/m ax=67.3 co u t “m ax=m ax(1 0 2,9 0)e n d l;/m axz:1 0 2 co u t “m ax=m ax(a,z )e n d l;/m ax 二 zco u t m ax=m ax(“abc”,bd )e n d l;/m ax=bd co u t “m ax=m ax(50,8 2.3)e n d l;/m ax=8 2.3 co
7、 u t “m ax 二 m ax (1.0,21.5,8 7.4)e n d l;/m ax=8 7.4co u t m ax=”m ax(“g h ,t y e ,z s )e n d l;/m ax=z sco u t m ax=m ax(23,7,62)e n d l;/m ax=62 r e t u r n 0;)(假定所有的赋值、比较运算符都一定义)答案:t e m p lat e T m ax (T x,T y)r e t u r n x =y?x:y;t e m p lat e T m ax (T x,T y,T z)T t e m p;t e m p=m ax(x,y);r
8、e t u r n t e m p =z?t e m p:z;)f lo at m ax(in t x,f lo at y)2 r e t u r n x =y?x:y;4.(20 分)定义堆栈类模板St ack,栈的大小由使用者确定。要求该类模板对外提供如下二种基本操作:(1)p u s h(2)p o p(假定赋值操作已定义)答案:#in clu d e t e m p lat e clas s St ackT s s iz e;in t iC u r r e n t E le m;p u blic:St ack();bo o l p u s h(T x);T p o p ();v o i
9、d p r in t()f o r(in t i=0;i s iz e;i+)co u t s i e n d l;);t e m p lat e St ack:St ack()f o r(in t i=0;i s iz e;i+)s i=0;iC u r r e n t E le m=-l;)t e m p lat e bo o l St ack:p u s h(T x)if (iC u r r e n t E le m=(s iz e-1)co u t z/Tt,s f u ll.z,e n d l;r e t u r n f als e;e ls e s+iC u r r e n t E
10、 le m=x;r e t u r n t r u e;)t e m p lat e T St ack:p o p()T t e m p;if (iC u r r e n t E le m=-l)co u t I t s e m p t y.?z e n d l;r e t u r n -1;e ls e t e m p=s iC u r r e n t E le m;s iC u r r e n t E le m=0;iC u r r e n t E le m-;r e t u r n t e m p;v o id m ain()(f lo at t;St ack s i;s i.p u s
11、 h(1 0);s i.p u s h(20);s i.p u s h(30);3s i.p u s h(40);s i.p r in t 0;t=s l.p o p();s i.p r in t ();co u t t e n d l;)5.(25 分)用C+语言定义M y St r in g (包括成员函数的实现代码),使之能符合下面程序及在注释中描述的运行结果的要求:m ain ()M y St r in g s i=0 1 234567 8 9”,s 2(5),s 3,s 4(s l);s i.d is p lay ();/此时显示出:s 2.d is p lay ();/此时显示出(
12、之 间 是 五 个 空 格):s 3.d is p lay ();/此时显示出:s 4.d is p lay();/此时显示出:s 3=s i;s 3.d is p lay ();/此时显示出:s 3=3+s 3;s 3.d is p lay 0;/此时显示出:s 2=s l2;s 2.d is p lay ();/此时显示出:s l.d is p lay O;/此时显示出:s 3=s 2+;s 2.d is p lay 0 ;/此时显示出:s 3.d is p lay ();/此时显示出:)答案:in clu d e#in clu d e t f in clu d e clas s M y
13、St r in g char cp B o d y 8 1;p u b l i c:M y S t r i n g(c o n s t c h a r*p =NU L L);M y S t r i n g(i n t i);M y S t r i n g(M y S t r i n g&s);M y S t r i n g f e o p e r a t o r=(c o n s t M y S t r i n g f t s)s t r n c p y(c p Bo d y,s.c p Bo d y,8 0);r e t u r n *t h i s;M y S t r i n g f c
14、o p e r a t o r (i n t i);M y S t r i n g&o p e r a t o r+(i n t i)s t a t i c M y S t r i n g s;s =*t h i s;*t h i s =(c p Bo d y 0 =0)?*t h i s :(*t h i s)1;r e t u r n s;vo i d d i s p l a y ()p r i n t f (,n?z,c p Bo d y);)f r i e n d M y S t r i n g&o p e r a t o r+(i n t i,M y S t r i n g f e
15、s););4M y S t r i n g:M y S t r i n g(c o n s t c h a r*p)(i f (p =NU L L)c p Bo d y 0 =0;e l s es t r n c p y(c p Bo d y,p,8 0);)M y S t r i n g:M y S t r i n g(i n t i)i n t j;f o r (j =0;j i&j 8 0;j+)c p Bo d y j =;c p Bo d y L j =0;)M y S t r i n g:M y S t r i n g(M y S t r i n g&s)*t h i s=s;/*
16、或者改用如下语句:i n t l e n g t h;l e n g t h=s t r l e n(s.c p Bo d y);f o r (i n t i=0;i l e n g t h+l;i+)c p Bo d y i =s.c p Bo d y i ;*/)M y S t r i n g&M y S t r i n g:o p e r a t o r (i n t i)s t a t i c M y S t r i n g s;i n t j;s =*t h i s;f o r (j =i;c p Bo d y E j !=0;j+)s.c p Bo d y j-i =s.c p B
17、o d y j ;s.c p Bo d y j-i =0;r e t u r n s;)M y S t r i n g f e o p e r a t o r+(i n t N,M y S t r i n g&s)s t a t i c M y S t r i n g s t;i n t i,l e n g t h;l c n g t h=s t r l e n(s.c p Bo d y);f o r(i=0;i N;i+)s.c p Bo d y l e n g t h+i =s.c p Bo d y l e n g t h-1;s.c p Bo d y l e n g t h+i =0;s
18、 t=s;r e t u r n s t;)6.(15 分)某公司有二类职员E m p l o y e e 和 M a n a g e r,M a n a g e r 亦属于E m p l o y e e。每个E m p l o y e e 对象所具有的基本5 信息为:姓名、年令、工作年限、部门号,M a n a g e r 对象除具有上述基本信息外,还有级别(l e ve l)信息。公司中的二类职员都具有二种基本操作:1).p r i n t O n O /输出个人信息2).r e t i r e O /判断是否到了退休年令,是,则从公司中除名。公司规定:/E m p l o y e e 类
19、的退休年令为55岁,M a n a g e r 类的退休年令为60岁。要求:1).定义并实现类E m p l o y e e 和 M a n a g e r;2).分别输I I I公司中二类职员的人数(注意:M a n a g e r亦属于E m p l o y e e)。答案:#i n c l u d e#i n c l u d e c l a s s E m p l o y e e c h a r n a m e 21;i n t w o r k Y e a r;i n t d e p a r t m e n t Nu m;p r o t e c t e d:s t a t i c i n
20、 t E Nu m b e r;i n t a g e;p u b l i c:E m p l o y e e(c h a r*s,i n t a g e l,i n t w o r k Y e a r 1,i n t d e p N)i f (s t r l e n(s)=18&w o r k Y e a r l =0&d e p N 0)a g e=a g e l;w o r k Y e a r=w o r k Y e a r 1;d e p a r t m e n t Nu m=d e p N;E m p l o y e e:E Nu m b e r+;)vi r t u a l vo
21、i d p r i n t O n()c o u t n a m e z,z,a g e z,zw o r k Y e a r,z,z =55)d e l e t e t h i s;E m p l o y e e:E Nu m b e r-;e l s e r e t u r n;s t a t i c vo i d c o u n t E O c o u t E m p l o y e e:E Nu m b e r e n d l;);i n t E m p l o y e e:E Nu m b e r=0;c l a s s M a n a g e r :p u b l i c E m
22、p l o y e e(i n t l e ve l;s t a t i c i n t M Nu m b e r;p u b l i c:M a n a g e r (c h a r*s,i n t a g e l,i n t w o r k Y e a r l,i n t d e p N,i n t l e v)6:E m p l o y e e(s,a g e l,w o r k Y e a r l,d e p N),l e ve l (l e v)M a n a g e r:M Nu m b e r+;vo i d p r i n t O n ()E m p l o y e e:p r
23、 i n t O n();c o u t l e ve l =60)d e l e t e t h i s;M a n a g e r:M Nu m b e r ;E m p l o y e e:E Nu m b e r ;e l s er e t u r n;s t a t i c vo i d c o u n t M O c o u t M a n a g e r:M Nu m b e r e n d l;;i n t M a n a g e r:M Nu m b e r=0;vo i d m a i n()E m p l o y e e e l (L i Y a n n i”,40,21,1),e 2(L i Q i n g s a n”,3 0,6,1);M a n a g e r m l (Ch e n P i n g”,50,3 0,2,1),m 2(X i u X u e zh o u”,57,3 5,2,2);e 2.p r i n t O n ();ml.printOnO;Employee:countE();Manager:countM();return;7
限制150内