座位号
中央广播电视大学2002-2003学年度第一学期“开放本科”期末考试(开)
2003年1月
题号 | — | 二 | 三 | 四 | 五 | 总分 |
分数 |
得 分 评卷人 一、单项选择题(毎小题2分,共20分)
说明:题后给岀一组答案,分别标识为A〜D,请从中选择出一个正确的答案,将其标识填 入括号中。
- 下列的常量名中,( 〉是非法的。
- YEAR2002
- welcome_home
- zhang @mail
- _SIZE_2MB
- 在程序中,函数声明语句正确位置是( )
- 随便任何位置
- 不包含在另一函数中的任何位置
- 该函数使用前的任何位置
- 该函数使用前的任何位置,但不包含在另一函数中
- 在内存中所存储的含L个字符的一个字符串常量是().
- 一串相应的ASCII码值,占用L个字节
- 一串相应的ASCII码值,占用L+1个字节
- 一组相应的正整数,占用L个字节
- 一组相应的整数,占用2L个字节
- C+ +中正整数可以用十进制、八进制和十六进制三种方式来表示,负整数()o
- 同样可以用十进制、八进制和十六进制三种方式来表示
- 只能用十进制方式来表示
- 可用十进制和八进制方式来表示,而不能用十六进制方式来表示
- 可用十进制和十六进制方式来表示,而不能用八进制方式来表示
- C+ +中的实数可以写成不同表示形式,下列表示形式中()是正确的•
- 5. 4321 B.5.43E2.1
C. e5. 4321 D. 5. 43X1021
- 返回类型就是函数返回结果值的数据类型。返回类型可以是( )
- 除数组和类以外的任意数据类型
- 除数组和结构类型以外的任意数据类型
- 除数组类型以外的任意数据类型
- 除指针和引用类型以外的任意数据类型
- 引入内联函数的主要目的是()
- 缩短程序代码,少占用内存空间
- 既可以保证程序的可读性,又能提高程序的运行效率
Q占用内存空间少,执行速度快
D.使程序的结构比较清晰
- 重载函数是()
- 以函数参数来区分,而不用函数的返回值来区分不同的函数
- 以函数的返回值来区分,而不用函数参数来区分不同的函数
- 参数表完全相同而返回值类型不同的两个或多个同名函数
- 参数表和返回值类型都必须是不同的两个或多个同名函数
- 一个类的静态数据成员所表示的属性确切地说()。
- 是类的或对象的属性
- 只是对象的属性
- 只是类的属性
- 类和友元的属性
- 当保护继承时,基类的()在派生类中成为保护成员,不能通过派生类的对象来直 接访问该成员。
A.任何成员 B,公有成员和保护成员
得分评卷人 二、填空題(毎小题2分,共20分)
说明:下列各题的有1一2处空项号,请在表格中对应的题号一空项号右边依次填写应有 的内容。
题号一空项号 | 应有的内容 | |
1—A,B | ||
2—C,D | ||
3—E | ||
4—F | ||
5—G,H | ||
6—1 | ||
7—J,K | ||
8—L | ||
9—M | ||
10—N |
- 变量名是变量的标识,由 A组成,而且必须以B开头。
- 表达式中多操作符的操作顺序规则是:优先级_g__的先操作,若优先级相同,则应按 D决定先操作哪个。
- C+ +中的实数表示形式,一种是定点数形式,另一种是指数形式,如1. 23X102,,用指 数形式可以表示为E 0
- return语句指示系统结束当前函数的执行,并F .
- C++使用传送参数的机制来传递数组,并把所有的数组参数自动转为H 。
- 出现在函数参数中的const表示
- 有了函数原型,函数的作用域就不是从丄开始,而是从开始。
- 函数名重载是指同一作用域内的多个函数使用相同的函数名,这些同名函数通过它们 的L进行区分。
- 指针变量的值是一个内存的M .
- 在真正使用一个void指针时,需要将它丄为某种数据类型的指针。
得分 | 评卷人 |
---|---|
三、程序填充题(毎个空项2分.共16分)
说明:下面程序的每行前面加有行号,不完整部分有空项号,按程序功能要求,在下列表格 中对应的行——空项号右边填充程序中的应有的内容。
行一空项号 | 应有的内容 |
2—A | |
10—B | |
12—C | |
13—D | |
15—E | |
16—F | |
23—G | |
24—H |
//
〃从键盘读入50个职工工资,并记录到一个数组中。
〃然后,计算职工工资平均值并调用函数bottom。计算工资最低值,并输出结果。
//
- uoid mainO
- {
- float employeeWagesCemployeeNum]^ {0};
- int i$
- float bottom_Wages» sunv_Wages=O.
- for( B )
IL (
12- C ‘〃从键盘向数组元素输入数据
- sunvWages D 3
- }
- cout«”The average wages is”VV E «endl»
- bottonuWages = F ;
- cout<<“The bottomof wages: n«bottom_Wages«endl?
- }
- float bollom(float fAarray[Jt int len)
- (
- float fBottom=fAarraytO];
- for(int i=l; G )
- H ?
- return fBottom;
- }
得分I评卷人 四、编程題(共20分)
说明:正弦函数sinx的近似值计算式如下:
X3 I x5 x7 ( (― 1
sin x=x–+— +……(2宀)!
其中,工为弧度,取值范围:(一8,8),”为大于等于。的整数值。
根据各个小题程序功能要求,写出函数的完整定义。
double sin^alpha_90(double dAlpha)
{〃下面是函数的实现
const double Delta=0.000001 ;
const double PI=3. 1415926;
double x, sio_d,sin_alpha;
int n=0 ;
x=dAlpha*PI/180; 〃角度单位转化成以弧度为单位
siik_alpha=O; //siiualpha 用于保存累加和
sin_d— x; 〃sin_d用于保存当前累加项的值
〃请向下编写剩余代码,完善这个算法,它为一个do或while循环,以及一条return语 句。
}
double sin^alpha(int n, double dAlpha) j
提示:可使用递归表示,即:
当n=0时,取值为Xf
当n>0时,取如下递归表达式:
sin_alpha(.n’) = sin_alpha(.n—l’) +5(n)
其中:
5(n)
(―1)”xZb+1
(2n+D!
33)也可用递归表示,即:
5(n)=5(n—1) *
(一 1)”/
2n(2n+l)
其中递归终止条件为队0)等于x
double sin_d(int n ,double x) 〃递归算法实现增量函数3(”)的绝对值
{//在下面写上程序的实现
)
double sin_alpha(int n ,double dAlpha) //递归算法计算正弦函数展开式中前n+1项 之和
{〃在下面写上程序的实现
}
竺’ 五、理解问答题(共24分)
说明:读懂各个小题程序,为了便于提问,程序的每行前面加有行号,请对所提的问题作出 准确的相应解答。
(1)(本小题10分)读懂如下程序:
- # include<iostream. h>
- # include<math. h>
- double TriangleAreaO
- (
- int i;
- double dTArea;
- double * pds= new doubleC5j ;
- if(! pds)
- (
- cout<<Z” Error memory allocation!” <T<Cendl ?
- return—1 $
- }
- pdsEO] = Os
- for(i=l;i<4;i+ + )
- (
- cout<<nthe side is:”;
- cin»pdsCi];
- }
- pds[4] = pds[0];
- for(i=l;i<4;i+ + )pds[0] * =(pds[4] — pds[i]);
- dTArea= sqrt( pds[01);
- deleteEjpds;
24.
return dTArea?
- }
- void mainO
- (
- double dAreai
- d Area = T riangle Area() >
- if(dArea== = — 1) cout«HThe program failed!,,«endl;
- else cout«HThe area of triangle is “VVdAreaVVendl,
- }
请写出下列问题答案,
答:
答:
答:
答:
(2)(本小题14分)读懂如下程序:
# include<iostream. h>
const int STACK_SIZE= 501
class Stack (
public:
void Init()(top=Oj}
void Push(char newElem);
char PopO;
int DepthO{return tops)
bool EmptyO(return top= =0
void Print () const I
private j
char elem[STACK_SIZE]?
int top;
};
/養*#舞*h養業養h*養普x itet x )t荣x覇x亲条** stack, cpp 旧^***餐案****»小驚*詩汩養弟 甘 include<iostream. h>
# include” stack. hM
void Stack!!Push(char newElem)
(
if( top = = STACK_SIZE)
(
cout«”\nStack is overfilled!”VVendl;
return;
}
elem^topj = newElem;
top+ + ;
}
char Stack: :PopO
(
if (! top)
(
cout«n\nStack is empty! !M«endlj
returnC! 0;
)
int ret=elemCtop—1];
top ;
return retj
)
void Stack ; I Print( ) const
{
,if(! top)cout<<11 Stack is empty!”?
else cout«”stacks” ?
for(int i=top—lo> = 0;i ) cout«elem[订V
cout«endl;
}
/弗**普普晉號说離mxxx苏養贍弟養苏*那*養養诲魂琳条弗普 main, cpp 哄ocacxx)(•%%餐鲁*汩He****%娜/
# include<iostream. h>
inclue”slack, h”
void mainO
(
Stack s;
char ch=’A*j
int i ;
s. InitO;
if(s. EmptyO) cout« M Stack is empty! n«endl j
cout«H\npushing 8 elements:11;
for(i=0; i<8 ; i+ +)
(
cout«ch« n f,;
s. Push(ch++);
}
cout«endl;
s. PrintOi
cout« w Poping elements :n ;
for(i=0ji<C5>i+ + ) cout«s. Pop()«”M > cout«endl;
cout«H Stack length=w«s. Depth。VVendh
cout« M /nPushing 1 elements: n«ch«endl|
s. Push(ch);
s. PrintO ;
cout«H\nPoping elements: “«endl; fQr(i=0;iV5;i+ + )coutVVs. Pop()«HM;
cout<<“Stack length=M«s. DepthC) <<lendl;
s, PnntO ;
}
请写出此程序执行所显示的输出结果。
中央广播电视大学2002-2003学年度第一学期“开放本科”期末考试(开)
(供参考)
2003年1月 | |
一、单项选择题(毎小题2分.共20分) | |
LC 2.D 3.B 4.B | 5. A |
6.C 7.B 8. A 9.C | 10. B |
二、填空题(毎小题2分.共20分) |
题号一空项号 | 应有的内容 | |
1—A,B | 字母、数字和下划线 | 字母或下划线 |
2—C»D | 高 | 结合性 |
3—E | 1. 23E23 或 1. 23e23 | |
4—F | 返回到调用该函数的地方继续运行 | |
5—G, H | 按地址 | 指针参数 |
6—I | 在函数体中不能对这个参数做修改 | |
7—J.K | 函数定义 | 函数原型 |
8—L | 不同的参数表 | |
9—M | 地址 | |
10—N | 强制转换 |
评分标准:每题2分,填错一空则不得分。
三、程序填充题(毎个填空项2分,共16分)
行一空顼号 | 应有的内容 – |
2—A | float bollom(float[], int) |
10—B | i=0 ? i<employeeNum ; i+ + |
12—C | cin> > employeeW ages[i] |
13—D | + — employeeWages[i] |
15—E | Sutik W ages/employeeN um |
16—F | botton(employeeWages»employeeNum) |
23—G | i<lenji+ + |
24—H | if( fBottom> fArray[i] fBottom=fArray[i3 |
评分标准:每填对一空项得2分,共16分
IBK编程題(共20分)
1-C10分)[参考答案解法一]
do{
if(n%2 = ==0) sin^alpha + = sin^dj
else sirualpha— = sin^d;
n+ + 3
sin_d* =x* x/(2 * n* (2 * n+1));
}while(sin_d> = Delta); 〃逐步逼近,直到一个累加项的值小于给定允许误差值
为止
return sin^alpha;
[参考答案解法二〕
while(sin_d> = Delta)
(
if(n%2= =O)sin_alpha + =sin_di
else sin_alpha— = sin_d ;
n+ + ;
sin_d * =x * x/(2 * n * (2 * n+D);
}
return sin.alpha;
评分标准:本小题共10分,具体评分要点如下
2. (10分)[参考答案]
double siivriKint n double x) 〃递归算法实现增量函数
(
i£(n= =0) return x;
else return sin_d(n—ltx) * x* x/(2 * n* (2 * n+D);
double sin_alpha(int n ,double dAlpha) 〃递归算法计算正弦函数
const double PI=3.1415926;
double x,d;
x= dAlpha * PI/180; 〃角度单位转化成以弧度为单位
〃检査参数是否合理,若不合理,给岀错提示信息,并立即退出,返回一1。 if(nV0||x>PI/2)
(
cout« ” Error! “«endb
return— 1 ;
}
if(n= =0) return x;
else
(
d = sin_d(n,x);
if(n%2= =0)return sin_alpha(n— 1,dAlpha) + d;
else return sin_alpha(n— 1, dAlpha) — d ?
}
)
评分标准:本小题共10分,其中sin_d算法占5分,sin-alpha算法占5分。请酌情给分。
五、理解问答题(共24分)
标准答案及评分标准:
- 答:申请分配相应于含有5个double类型数据的数组的内存空间。(2分)
- 答:不能省,若系统已无内存空间可分配,继续执行本程序可能发生破坏性后 果。(2分)
- 答:释放相应于前面申请获准所占用内存空间.(2分)
- 答:根据输入三边长计算三僻形的面积.(2分) 执行结果输出内容为:(2分)
the side is:3. 0
the side is:4. 0
the side is:5. 0
The area of triangle is 6. 0
程序的输出应该是:
Stack is empty!
pushing 8 elements: A B C D E F G H stack: H G F E D C B A
Poping elements :H G F E D
Stack length=3
Pushing 1 elements:!
stack: I C B A
Poping elements:
I C B A
Stack is empty!!
Stack length=0
Stack is empty!
评分标准:输出共分4段,共14分,各占2,5,4和3分。
评论0