一、单项选题
1.字符串”a+b=12/n”的长度为( )。
A. 6 B. 7 C. 8 D. 9
2. x>0 || y==5的相反表达式为( )。
A. x<=0 || y!=5 B. x<=0 && y!=5
C. x>0 || y!=5 D. x>0 && y==5
3. 循环体有可能一次都不执行的语句为( )。
A. for循环 B. switch循环
C. do循环 D. 任一种循环
4. 函数调用func((exp1,exp2,exp3),exp4,exp5))中所含实参的个数为( )个。
A. 1 B. 2 C. 3 D. 5
5. 假定p是具有int**类型的指针变量,则给p赋值的正确语句为( )。
A. p=new int; B. p=new int[10];
C. p=new int**; D. p=new int*;
6.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为( )。
A. 2 B. 4 C. 6 D. 0
7. 假定一个类的构造函数为“A(int aa=1, int bb=0) {a=aa; b=bb;}”,则执行“A x(0);”语句后,x.a和x.b的值分别为( )。
A. 0和0 B. 0和1 C. 1和0 D. 1和1
8. 假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( )。
A.int AA::a() B.int AA:a()
C.AA::a() D.AA::int a()
9.关于插入运算符<<的重载,下列说法不正确的是( )。
A. 运算符函数的返回值类型是ostream & 。
B. 重载的运算符必须定义为类的成员函数。
C. 运算符函数的第一个参数的类型是ostream & 。
D. 运算符函数有两个参数。
10. 假定AB为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行“delete []px;”语句时共调用该类析构函数的次数为( )。
A. 0 B. 1 C. n D. n+1
二、填空题
1. 当使用_______保留字作为函数类型时,该函数不返回任何值。
2. 执行char *p=new char(’x’)操作后,p所指向的数据对象的值为________。
3. 当在程序中执行到________语句时,将结束本次循环,执行下一次循环语句。
4. 一个指针类型的对象占用内存的________个字节的存储空间。
5. 假定用户为类AB定义了一个构造函数“AB(int aa) {a=aa;}”,则系统(会/不会)_________为该类自动定义一个无参构造函数"AB() {}"。
6.已知语句“cout<<s;”的输出是“hello,world”,则执行语句“cout<<s+%;”的输出结果为__________。
7. 如果一个派生类的基类不止一个,则这种继承称为____________。
8. 重载一个函数的条件是:该函数必须在参数的个数或参数对应的__________上与其它同名函数不相同。
9. 假定用户为类AB定义了一个构造函数“AB(int aa) {a=aa;}”,则系统(会/不会)_________为该类自动定义一个无参构造函数"AB() {}"。
10.假定用户为类AB定义了一个构造函数“AB(int aa=0):a(aa){}”,则定义该类的对象时,可以有________种不同的定义格式。
三、程序填充题,根据题意在横线上填写合适的内容。
1. 已知一个类的定义如下:
#include<iostream.h>
class AA {
int a[10];
int n;
public:
void SetA(int aa[], int nn); //初始化函数
int MaxA(); //从数组a中前n个元素中查找最大值
void SortA(); //采用选择排序的方法对数组a中前n个元素 进行从小到大排序
};
该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。
int ____(1)_____
{
int x=a[0];
for(int i=1; i<n; i++)
if(a[i]>x) ___(2)___;
___(3)___;
}
(1) (2) (3)
2. 类A的定义
class A {
int *a; int n; int MaxLen;
public:
A(): a(0), n(0), MaxLen(0) {} //无参构造函数
A(int *aa, int nn, int MM) { //带参构造函数
n=nn;
MaxLen=MM;
if(n>MaxLen) exit(1);
a=new int[MaxLen];
for(int i=0; i<n; i++) _____(1)_______;
}
~A(){_____(2)_________;}
};
(1) (2)
3.在下面一段类定义中, Derived类公有继承了基类Base。需要填充的函数由注释内容给出了功能。
class Base{
private:
int mem1,mem2; //基类的数据成员
public:
Base(int m1,int m2) {
mem1=m1; mem2=m2;
}
void output(){cout<<mem1<<' '<<mem2<<' ';}
};
class Derived: public Base{
private:
int mem3; //派生类本身的数据成员
public:
//构造函数,由m1和m2分别初始化mem1和mem2,由m3初始化mem3
Derived(int m1,int m2, int m3);
//输出mem1,mem2和mem3数据成员的值
void output(){
___(1)___;
cout<<mem3<<endl;
}
};
Derived::Derived(int m1,int m2, int m3): ___(2)___ {
___(3)___;
}
(1) (2) (3)
四、理解问答题,写出程序运行结果或程序(或函数)所能实现的功能。
1.#include<iostream.h>
double f1(int n) {
double sign=1,s=1;
for(int i=2;i<=n; i++) {
s+=sign/(i*i);
sign*=-1;
}
return s;
}
void main(){
int a;
cin>>a;
cout<<f1(a)<<endl;
}
函数功能:
2.char* f8(char* str1, const char* str2){
int i=0,j=0;
while(str1[i]) i++;
while(str2[j]) str1[i++]=str2[j++] ;
str1[i]='/0';
return str1;
}
函数功能:
3.#include<iostream.h>
void f2(int& x, int& y){
int z=x; x=y; y=z;
}
void f3(int* x, int* y){
int z=*x; *x=*y; *y=z;
}
void main(){
int x=10,y=26;
cout<<"x,y="<<x<<", "<<y<<endl;
f2(x,y);
cout<<"x,y="<<x<<", "<<y<<endl;
f3(&x,&y);
cout<<"x,y="<<x<<", "<<y<<endl;
x++; y--;
f2(y,x);
cout<<"x,y="<<x<<", "<<y<<endl;
}
运行结果:
五、程序改错,请根据程序段或函数模块的功能改写个别地方的错误。
下面是分数类fract的定义及测试主程序,在类定义及其友元函数定义中有两处错误,更正错误后程序应显示41/28,请指出错误所在行的行号并给出改正意见。
class fract{
int den; //分子
int num; //分母
public:
fract(int d=0,int n=1):den(d),num(n){} //1行
friend fract &operator+=(fract,fract&); //2行
void show(){ cout<<den<<'/'<<num;} //3行
}; //4行
friend fract &operator+=(fract f1,fract f2) //5行
{ //7行
f1.den=f1.den*f2.num+f1.num*f2.den; //8行
f1.num*=f2.num; //9行
return f1; //10行
}
void main(){
fract fr(3,4);
fr+=fract(5,7);
fr.show();
}
错误行的行号为______和________。(2分)
分别改正为_____________________________________(4分)
和_____________________________________(4分)
一、单选题
1. B 2. B 3.A 4.C 5. D 6. D 7. A 8.A 9. B 10. C
二、填空题
1. void 2. ‘x’ 3.contiune 4. 4 5. 不会
6. ple 7. 多继承(或多重继承) 8. 类型 9. 不会 10. 2
三、程序填充题,根据题意在横线上填写合适的内容。
评分标准:每空4分
1. (1) AA::MaxA() (2) x=a[i] (3) return x
2. (1)a[i]=aa[i] (2)delete []a
3. (1) Base::output() (2) Base(m1,m2) (3) mem3=m3
四、理解问答题,写出程序运行结果或程序(或函数)所能实现的功能。
1. 计算并输出1+ 的值,其中a的值由键盘输入。
2.实现strcat函数的功能,把str2所指字符串连接到str1所指字符串的后面,并返回str1指针。
3. x,y=10, 26
x,y=26, 10
x,y=10, 26
x,y=25, 11
五、程序改错,请根据程序段或函数模块的功能改写个别地方的错误。
2 5
friend fract &operator+=(fract&,fract);
fract &operator+=(fract &f1,fract f2);
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。
相关文章:
电大《园林规划》期末考试复习资料04-27
电大《政府经济学》期末复习题(名词解释)04-27
电大《政府经济学》期末复习题(多选)04-27
浙江电大《宪法学》期末复习指导04-27