座位号
中央广播电视大学2002-2003学年度第二学期“开放本科”期末考试(开)
2003年7月
题号 | —- | 三 | 四 | 五 | 总分 | |
分数 |
一、单项选择题(每小题2分,共20分)
说明:题后给出一组答案,分别标识为A〜D,请从中选择出一个正确的答案,将其标识填 入括号中。
- 下列的常量名中,( 〉是非法的。
- PI
- 2002YEAR
- Li_Si
- _KINE〜2_5
- 在程序中,自动变量定义语句正确位置是( )。
- 随便任何位置
- 在所有函数之前
- 该变量使用前的任何位置
- 局部希围内该变量使用前的任何位置
- 在内存中所存储的含L个字符的一个字符串常量是( )«
- 一串相应的ASCII码值,占用L个字节
- 一串相应的ASCH码值,占用L+1个字节
- 一组相应的正整数,占用L个字节
3 一组相应的整数,占用2L个字节
(1008号)面向对象程序设计试题第1页(共14页)
- C++中整数可用十进制、八进制和十六进制三种方式来表示,但负整数( )。
- 不能用十六进制方式来表示,可用十进制和八进制方式来表示
- 不能用八进制方式来表示,可用十进制和十六进制方式来表示
- 既不能用八进制也不能用十六进制方式来表示
- 不能表示
- C++中的实数可以写成不同表示形式,下列表示形式中( )是正确的。
- 1. 234E5 B. 1. 234X106
C. E5 D. 3E4. 5
- 函数之间的调用是( )。
- 高层的函数调用低层的函数
- 低层的函数不能调用高层的函数
- 具有层次关系,不能随意进行相互调用
- 没有层次关系,函数之间完全可以随意进行相互调用
- 被非静态成员函数访问的类的数据成员( )o
- 可以是非静态数据成员也可以是静态数据成员
- 不可能是类的静态数据成员
- 只能是类的非静态数据成员
- 只能是类的静态数据成员
- 当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()就可以直接访
问类B的成员( )。
A.只能是公有成员
B-只能是保护成员
- 是除私有成员之外的任何成员
- 是任何成员
- 从一个基类派生出的各个类的对象之间( )。
- 共享所有数据员,还包含了由同一个基类生成的对象
- 共享部分数据成员,并包含了由同一个基类生成的对象
- 不共享任何数据成员,但包含了由同一个基类生成的对象
- 共享部分数据成员
- 在定义一个派生类时,若不显式说明是哪种继承方式,那么就默认为( )方式。
A.私有继承 B.非私有继承
C.保护继承 D.公有继承
<1008号)面向对象程序设计试题第2页(共14页)
——二、填空题(毎小题2分,共20分)
说明:下列各题有1一2处空项号,请在表格中对应的题号——空项号右边依次填写应有 的内容。
题号一空项号 | 应有的内容 | |
1—A,B | ||
2—C | ||
3—D,E | ||
4—F,G | ||
5—H | ||
6—1 | ||
7—J | ||
8—K | ||
9—L | ||
10—M |
- 表达式是由按照一定语法规则组成的符号序列,表达式加上构成表达式 语句。
- 大多数表达式都具有值,它是将操作符施加于操作数的计算结果。若表达式是一个— C_的函数调用,则它没有值。
- contnue语句的作用是结束D ,跳转到E处,继续执行下一次循环。
- 在函数定义中的参数称为_巨_,在调用函数的地方传递给被调函数的参数称为G 。
- 如果定义一个函数的返回类型为void,就表示该函数H 。
- 定义在_丄_之外的变量或常量为全局量,它可以在其后的所有地方使用。
- 当函数的参数是指针时,它的实在参数的值必须是一个
- 函数返回值类型带有const标记,表示不能将函数调用表达式作为亠_使用。
- C+ +编译器处理内联函数比较特殊;在遇到调用内联函数的地方会用_丄_来替换 函数的调用。
- 假定一个变量定义语句为”int x;”则定义一个指针变量p并初始化为x的地址的语 句为 M 。
(1008号)面向对象程序设计试题第3页(共14页)
说明:下面程序的每行前面加有行号,不完整部分有空项号,按程序功能要求,在下列表格
评卷人
三、程序填充题(每个空项2分,共16分)
中对应的行——空项号右边填充程序中的应有的内容。
//
行一•空项号 | 应有的内容 |
---|---|
1—A | |
3—B | |
10—C | |
13—D | |
15—E | |
16—F | |
23—G | |
24—H |
〃从键盘读入80名职工年龄,并记录到一个数组中。
//然后,计算职工年龄平均值并调用函数top()计算最高年龄值,并输出结果。
//
贖
堆
3-
湘I
琳
- void main()
- { ‘
- int employeeAge[employeeNum];
- int i;
- int top_Age,sum_Age=0 ;
- for( C )
- (
- cin>>employeeAge[i];
(1008号)面向对象程序设计试题第4页(共14页)
睫 at?
茹
20* int top(int iArrayO 4nt len)
得分 | 评卷人 |
四、编程题(共20分)
说明:正弦函数corKr的近似值计算式如下:
conj:=l —^ + ― — —+
2! 4! 6!
I (_1)U
%)!
其中,工为弧度,取值范围:一8Vx,〈8)g为大于等于0的整数值。
根据各个小题程序功能要求,写出函数的完整定义。
1.(本小题10分)利用上述近似值计算式,实现余弦函数cona的近似值计算,其中,a为
角度数,取值范围要求误差小于给定值Delta=0. 000001 o
double con_alpha_90(double dAlpha)
(〃在下面写上程序的实现
const double Delta=0. 000001 ;
const double PI=3. 1415926;
(1008号)面向对象程序设计试题第5页(共14页)
double x, con„d»con_alpha;;
int n=0;
x=dAlpha*PI/18O5 〃角度单位转化成以弧度为单位
con_alpha = 0; //con_alpha 用于保存累加和
con_d = l? 〃con_d用于保存当前累加项的值
//请向下编写剩余代码,完善这个算法,它为一个do或while循环,以及一条return语 句。
2.〈本小题10分)根据下面所给的函数原型用递归算法实现上一小题余弦函数cona的近
似值计算。其中n的值为需要累加的项数减bdAlpha的值为一个角度数。 double con_alpha(int n, double dAlpha);
提示:可使用递归表示,即:
当n=0时,取值为1;
当n〉0时,取如下递归表达式:
con_alpha(n’) = con_alpha(.n ——1) +5(n)
其中:
而况—
S3)也可用递归表示,即:
&沥= 33—1)*奈编
其中递归终止条件为3(。)等于1
double con_d(int n ,double x) //递归算法实现增量函数的绝对值
{〃在下面写上程序的实现
}
double con_alpha(int n ,double dAlpha) //递归算法计算余弦函数展开式中前n+1项
之和
{〃在下面写上程序的实现
密 封 线 内 不 要 答 题
Q甘I軟)旧8掀睫綴右悠曲驰赚衩回阀(哑802)
得分 | 评卷人 |
五、理解问答题(本题共24分)
说明:读懂各个小题程序,为了便于提问,程序的每行前面加有行号,请对所提的问题作出 准确的相应解答。
(1)(本小题10分)读懂如下程序:
|
|
|
|
|
|
|
|
长 | 10. returnl; |
11- }
12. doubled dRad= * pdr; |
|
|
|
23; return 0 ; 24. } |
- void main()
- {
- if( Sector AreaC ))
- cout«”The program failed!”<<endl;
- else
- coutVV”The program successed! ”VVendl;
- }
请写岀下列问题答案:
答:
答:
答:
40.0和70.0,写岀执行输出结果。
答:
(2)(本小题14分)读懂如下程序:
/ ******************************** stack, h ******************************** class Stack {
public:
StackCint size=20);
〜Stack();
void PushCint newElem);
int Pop();
int DepthO (return top;}
bool EmptyO (return top= =0;)
bool FullO (return top— = stackSize;}
void PrintOconst;
private:
const int stackSize;
int * elem; int top;
};
/ ^**^**************************** stack, cpp *******************************
并 include<iostream. h>
# include” stack, h”
Stack:: Stack(int size) :stackSize(size)
{
elem==new int|2size]; 、
top=0;
}
Stack: : ~Stack()
(
deleteCJelem;
)
void STack: \ Push(int newElem)
(1008号)面向对象程序设计试题第11页(共14页)
if(FullO)
cuut<<MnStack is overfilled!!! 1,<<endh return;
}
elem^top] = newElem ;
top++ ;
}
int Stack: : Pop()
{
if(EmptyO)
{
cout<<“\nStack is empty! ! ! Top==”; return 0 j
int ret = elemLtop—1];
top ;
return ret;
)
void Stack’ I Print( ) const
{
if( ! top ) cout< V ” Stack is empty!”;
else cout< < stack:”;
for(int i = 0;i< = top —l;i+ + ) coutVVelem[i]VV” co utV Vendl;
}
/ ******************************** main, cpp *********************************
律 include<iostream. h> # inclue”stack. h” void mainO
Stack s(10); int i; cout<<“Pushing 10 elements:”;
£or(i=-0;i<10;i+ + )
cout«i«” s. Push(i);
cout<<“\nStack length—n«s. Depth()«endl; cout <<“\nstack full?”<<s. Ftdl()VVend» s. PrintO ;
cout<<C”\nPoping elements:M ;
for(i=0;i<12;i+ + ) cout«s. POpO«H ” cout V Vendl; cout<<“\nPushing 6 elements: M<<endl?
for(i=6;i>0;i )s. Push(i); cout<<“Stack length= “<<s. Depth。VVendl; s. Print。; cout<<*’\npushing 5 elements:H for(i=0;iV5;i+ + )
coutVViVV”
s. Push(i);
cout«”\nstack full?” VVs. Full() VVendl;
s. PrintO ;
}
请写出此程序执行所显示的输出结果。
煽
涸
中央广播电视大学2002-2003学年度第二学期“开放本科”期末考试(开)
—、 | 2003年7月
单项选择题(每小题2分,共20分) 1. B 2. D 3. B 4. C 5. A 6. D 7. A 8. D 9. C 10. A 评分标准:共20分,每答对一小题得2分。 填空题(每小题2分,共20分) |
||
题号一空项号 | 应有的内容 | ||
1—A,B | 操作符和操作数 | 分号 | |
2—C | 没有返回值 | ||
3—D,E | 当前一次循环 | 循环开始 | |
4 一 F,G | 形式参数 | 实在参数 | |
5—H | 没有返回值 | ||
6—I | 任何函数(或所有函数) | ||
7—J | 地址(或内存地址) | ||
8—K | 左值 | ||
9—L | 函数体中的代码 | ||
10—M | int * p= &x; |
评分标准:共20分,每题2分,填错一空则不得分。
三、程序填充题标准答案
行一空项号 | 应有的内容 |
1—A | 埠 include<iostream. h> |
3—B | const int |
10—C | i— 0 ; i<employeeNum ;i+ + |
13—D | + = employeeAgeQi]; |
15—E | sum Age/empIoyeeNum |
,.16—F | top Age= top(employeeAge? empIoyeeNum); |
23—G | int i=l ; iVlen ; i+ + |
24—H | ifGTopViArray[i]) iTop = iArrayQi] |
评分标准:共16分,每填对一空项得2分。
四、编程题标准答案
do{
if(n%2==0) con_alpha+ ~con_d;
else con_alpha~ =con_d;
n++ ;
con_d *==x*x/(2*n*(2*n—1));
}while(con_d> = Delta); 〃逐步逼近,直到一个累加项的值小于给定允许误差值
为止
return son„alpha ;
[参考答案解法二]
while(con_d> — Delta) {
if(n%2 = = 0)con_alpha 4- = con_d;
else con_alpha—=con_d;
n+ + ;
con„d 关—x * x/(2 * n * (2 * n— 1));
}
return con_alpha ;
评分标准:本小题共10分,具体评分要点如下
double con_d(int n double x) 〃递归算法实现增量函数
{
if(n==0) return 1 ; ,
else return con_d(n—1) ,x)*x*x/(2*n*(2* n— 1));
double con_alpha(int n ,double dAlpha) 〃递归算法实现余弦函数
const double PI—3. 1415926;
double x,d;
x-dAlpha * PI/180; 〃角度单位转化成以弧度为单位
〃检査参数是否合理,若不合理,给出错提示信息,并立即退出,返回一1。
if(n<0| |x>PI/2)
{
coutV V”Error! ” V Vendl;
return— 1 ;
}
//递归算法计算
if(n==0) return 1 ;
else
{
d=con„d(n,x);
i£(n%2 — —0)return con_alpha(n—1,dAlpha) +d;
else return con_alpha(n~ 1,dAlpha) — dj
)
}
评分标准:本小题共10分,其中con_d算法占5分,con_alpha算法占5分。请酌情给分。
五、理解问答题(共24分)
(2分)
执行输出结果为:(2分)
the sector start is:40. 0 the sector end is:70. 0
The area of sector is 9. 42
The program saccessed!
输出结果为:
Pushing 10 elementsO
Stack length= 10 stack full? 1
Stack:0 123
Poping elements: 9
3 2 10
Stack is empty! ! !
Top— —0
Stack is empty! ! !
Top = = 0
Pushing 6 elements:
Stack length = 6
Stack:6 5 4 3 2
Pushing 5 elements: 0
Stack is overfilled!! !
stack full? 1
Stack:6 5432
评分标准:共14分,输出共分6段,每段正确得2分,全对得14分。
评论0