面向对象程序设计课程期末针对性训练
训练第一套
一、单项选择题(每小题2分,共20分)
1. xy均为bool量,则x || y为假的条件是()。
A.它们均为真    B.其中一个为真
C.它们均为假    D.其中一个为假
2. 假定一个二维数组的定义语句为“ int a[4] = { {3, 4, 2, 8,6}}; ”,则元素a[l] [2]
的值为(    =
A. 2 B. 4 C. 6 D. 8
3. 假定p是具有int**类型的指针变量,则给p赋值的正确语句为    )。
A. p=new int; B. p=new int*; C. p=new int**; D. p=new int[10]:
4. 软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时 进行相应的软件更新的难易程度叫做软件的( o
A,可维护性    B.可复用性    C,兼容性 D.正确性
5. 若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字()放在函 数原型或函数头的前面。
A. in B. inline C. inLine D. InLiner
6. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列 长度为length,则队尾的后一个位置为()o
A. length+1    B. first+length
C. f irst+length-1%MS    D. f irst+length%MS
7. 假定一个类的构造函数为“Aint aa, int bb {a=aa; b=aa*bb;}",则执行“A x4, 5;”语句后,x. ax. b的值分别为()。
A. 4 5 B. 5 4 C. 4 20 D. 20 5
8. 假定AB为一个类,则执行“AB *p=new AB1, 2;"语句时共调用该类构造函数的次 数为()o
A. 0 B. 1 C. 2 D. 3
9. 一个类的成员函数也可以成为另一个类的友元函数,这时的友元声明(    )类域
的限定。
什么编程课比较好A,需加上 B.不需加上    C.可加可不加 D.取消
10, 队列具有(    )的操作特性。
A.先进先出 B,先进后出 C,进出无序 D.仅进不出
二、填空题(每小题2分,共20)
1. 多行注释的开始标记符为 O
2. 假定x=5, y=6,则表达式x++*++y的值为。
3. 假定x是一个逻辑量,则x && true的值与x的值   
4. 含随机函数的表达式rand()%20的值在0    的整数区间内。
5. 程序的编译是以 为单位进行的。
6. 一个数组的 实际上是指向该数组的第一个元素的指针,并且在任何时候都
不允许修改它。
7. 指针变量 pv pc 定义为"void *pv ="Hello, word!,,; char *pc;”,要将 pv 值赋 pc,则正确的赋值语句是pc=()pvo
8. 一个类的—    —函数通常用于实现释放该类对象中指针成员所指向的动态存储
空间的任务。
9. 假定用户为类AB定义了一个构造函数“AB(int aa) :a(aa) {} ”,则 是该
类的数据成员。
10. 在多文件结构的程序中,通常把含有main。函数的文件称为该程序的
三、程序填充题,根据题意在横线上填写合适的内容。(每小题6分,共24)
1. 采用辗转相除法求出两个整数的最大公约数。
#include<iostream. h>
void main ()
(
int a, b;
cout«z请输入两个正整数:”;
cin>>a>>b;
while(a<=0 | | b<=0) (cout«z重新输入:";cin»a»b;}
while(b) {
int r;
r=a%b;
//分另U修改 a b 的值
cout«a«endl; 〃输出最大公约数
2. 用插入排序方法对table指针数组中size个指针所指向的字符串进行按升序排序的 算法。
void sort(char stable[], int size){
for(int i=l; i<size; i++) (
char *p=table[i];
for (int j=iT; j>=0 ; j—)
if (strcmp(p, table[j])<0) table[j+l]=;
else break;
table[j+l] =;
3. A的定义
class A {
char *a;
public:
A() {a=NULL;}    //定义无参构造函数,使a为空指针
A(char *aa) {
a= char[strlen(aa)+1];
strcpy (a, aa);    〃用aa所指字符串初始化a所指向的动态存储空间
}
〃定义析构函数,删除a所指向的动态存储空间
}
4. Goods的定义
class
{
private:
〃商品名称
//商品重量
//同类商品总重量
//构造函数
char Name[20];
int Weight;
static int totalWeight; public:
Goods (char^str, int w){ strcpy(Name, str);
Weight=w;
totalWeight+=Weight;
}
//返回商品名称
〃定义静态成员函数返回总重量
Goods (){totalWeight-Weight;} char* GetN () (;} int GetW()(return weight;} static int GetTotalWeight() {
四、理解问答题,分别写出前2小题的程序运行结果和指出后2小题的程序或函数功 能。(每小题6分,共24)
1. #include<iostream. h> const int T=6;
void main () ( int i, j, k=0; for(i=l;i<=T;i+=2){ for(j=2;j<=T;j+=2) k++;
} cout<<,,k=,,<<k«endl;
}
运行结果:
2. #include<iostream. h>
class CE { private: int a, b; int getmax() (return (a>b? a:b);} public: int c;
void SetValue(int xl, int x2, int x3) ( a=xl; bx2; c=x3;
} int GetMax ();
}
int CE: : GetMax () ( int dgetmax(); return (d>c? d:c); ) void main() ( int x=5, y=12, z=8; CE ex;
ex. SetValue (x, y, z); cout<<ex. GetMax()<<endl; )
运行结果:
3. #include<iostream. h>
void main ()
{
int i,p=l;
int N;
cout〈〈〃输入一个正整数:”;
cin>>N;
for (i=l;i<=N;i++) p*=i;
cout<<,,N!=,,«p«endl;
}
程序功能:
4. int f(char *s)
(
int i=0;
while(*s++)i++;
return i;
};
函数功能:
五、编程题(每小题6分,共12)
1. 编写一个函数,分别求出由指针a所指向的字符串中包含的每种十进制数字出现的 次数,把统计结果保存在数组b的相应元素中,该函数的原型声明如下:
void fun(char* a, int b[]);
2. 根据下面类中CompareBig函数成员的原型和注释写出它的类外定义。 class AA {
int* a;
int n;
int MS;
public:
void InitAA(int aa[], int nn, int ms) (
if (nn>ms) (cout«z'Error!z<<endl; exit (1) ;}
MSms;
n=nn;
a=new int[MS];

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。