C++语言程序设计 自测题及答案 下载本文

内容发布更新时间 : 2024/4/29 15:55:00星期一 下面是文章的全部内容请认真阅读。

public //5行 int c; //6行 void SetValue(int x1,int x2, int x3) { //7行 a=x1; b=x2; c=x3; //8行 }; //9行 int GetMin(); //10行 }; //11行 int GetMin() { //12行 int d=getmin(); //13行 return (d

错误行的行号为______、________和________。

分别改正为____________________、________________和___________________。

6. 下面程序段第4-10行中存在着三行语法错误,请指出错误行的行号并改正。 class A { //1行 int a,b; //2行 const int c; //3行 public //4行 A():c(0);a(0);b(0) {} //5行 A(int aa, int bb) c(aa+bb); {a=aa; b=bb;} //6行 }; //7行 A a,b(1,2); //8行 A *x=&a, &y=b; //9行 A *z=new A, w[10]; //10行

错误行的行号为______、________和________。

分别改正为_________________、____________________和___________________________。

7. 下面程序段第4-9行中存在着三条语句错误,请指出错误语句的行号并说明原因。 class A { //1行 int a,b; //2行 const int c; //3行 public: //4行 A() {a=b=c=0;} //5行 A(int aa, int bb):c(aa+bb) {a=aa; b=bb;} //6行 }; //7行 A a,b(1,2,3); //8行 A x(2,3), y(4); //9行

错误行的行号为______、________和________。

21

错误原因分别为___________________、__________________和__________________。

8. 下面程序段第10-17行中存在着三条语句错误,请指出错误语句的行号并说明原因。 class A { //1行 int a; //2行 public: //3行 A(int aa=0):a(aa){} //4行 }; //5行 class B { //6行 int a,b; //7行 const int c; //8行 A d; //9行 public: //10行 B():c(0) {a=b=0;} //11行 B(int aa, int bb):d(aa+bb) { //12行 a=aa; b=bb; c=aa-bb; //13行 } //14行 } //15行 B a,b(1,2); //16行 B x=a,y(b),z(1,2,3),; //17行

错误行的行号为______、________和________。

错误原因分别为_____________________、____________________和___________________。

六、编程

1. 按照函数原型语句“void p(int n);”编写一个递归函数显示出如下图形,此图形是n=5的情况。 55555 4444 333 22 1

2. 按照函数原型语句“void p(int n);”编写一个递归函数显示出如下图形,此图形是n=5的情况。 1 22 333 4444 55555

3. 根据下面类中Count函数成员的原型和注释写出它的类外定义。

22

class AA { int* a; int n; int MS; public:

void InitAA(int aa[], int nn, int ms) {

if(nn>ms) {cout<<\ MS=ms; n=nn;

a=new int[MS];

for(int i=0; i

int Count(int x); //从数组a的前n个元素中统计出其 //值等于x的个数并返回。 };

4. 根据下面类中Search函数成员的原型和注释写出它的类外定义。 class AA { int* a; int n; int MS; public:

void InitAA(int aa[], int nn, int ms) {

if(nn>ms) {cout<<\ MS=ms; n=nn;

a=new int[MS];

for(int i=0; i

int Search(int x); //从数组a的前n个元素中顺序查找值为x的第一个元素, //若查找成功则返回元素的下标,否则返回-1。 };

5. 根据下面类中MaxMin 函数成员的原型和注释写出它的类外定义。 class AA { int* a; int n; int MS; public:

void InitAA(int aa[], int nn, int ms) {

if(nn>ms) {cout<<\ MS=ms;

23

n=nn;

a=new int[MS];

for(int i=0; i

}

int MaxMin(int& x, int& y); //从数组a的前n个元素中求出 //最大值和最小值,并分别由引用参数x和y带回, //同时若n大于0则返回1,否则返回0。

};

6. 根据下面类中Compare 函数成员的原型和注释写出它的类外定义。 class AA { int* a; int n; int MS; public:

void InitAA(int aa[], int nn, int ms) {

if(nn>ms) {cout<<\ MS=ms; n=nn;

a=new int[MS];

for(int i=0; i

int Compare(AA b); //比较*this与b的大小,若两者中 //的n值相同,并且数组中前n个元素值对应 //相同,则认为两者相等返回1,否则返回0。 };

7. 根据下面类中CompareBig 函数成员的原型和注释写出它的类外定义。class AA { int* a; int n; int MS; public:

void InitAA(int aa[], int nn, int ms) {

if(nn>ms) {cout<<\ MS=ms; n=nn;

a=new int[MS];

for(int i=0; i

int CompareBig(AA b); //比较*this与b的大小,从前向后按两数组 //中的对应元素比较,若*this中元素值大则返回1,若b中

24

//元素值大则返回-1,若相等则继续比较下一个元素,直到 //一个数组中无元素比较,此时若两者的n值相同则返回0, //否则若*this中的n值大则返回1,若b中的n值大则返回-1。 };

C++语言程序设计自测练习(三)参考解答

一、单项选择题

1. A 2. B 3. B 4. C 5. D 6. B 7. A 8. D 9. B 10. C 11. D 12. A 13. A 14. B 15. D 16. B 17. A 18. C 19. A 20. B 21. D 22. C 23. A 24. C 25. B 26. A 27. C 28. C 29. D 30. B 31. D 32. C 33. A 34. B 35. A 36. C 37. C 38. B 39. A 40. C 41. B 42. A 43. D 44. D 45. B 46. A 47. C 48. D 49. B 50. C

二、填空

1. 4*i 2. *(a+i) 3. a+i*sizeof(a[i]) 4. 第一个 修改 5. b[7] b[2] 6. int *p=&x; 7. *p 8. int[n] int * 9. c[3][0] c[3][2] 10. int(*)[6]

11. *(a[i]+j) 或*(*(a+i)+j)或*(a+i)[j] 12. int &y=x;

13. x 14. 相等 x 15. *p 16. p[0] *p 17. ’a’ 18. char(*)[n] 19. delete p 20. delete []p 21. 0 (或’\\0’) 22. double *pv=&v; 23. H 24. ple

25. pc=(char *)pv; 26. int (*p)[100]=b; 27. (*p).name 28. fp->score 29. int &ra=a; 30. 6 31. 10 32. 17 33. 对象 34. 实例 35. 封装 36. 继承

37. 聚合 38. 抽象 封装体 39. 继承 40. 多继承(或多重继承) 41. 单继承 42. 编译 运行 43. 重载 虚函数 44. 设计 实现

45. 问题域 应用 46. 函数 47. private(或私有) 48. public(或公有) 49.private 50. public(或公有) 51. private 52. 内联 53. 类名 54. :: (或双冒号) 55. inline 56. 作用域 57. AA* AA::abc() 58. 不在 59. const 60. const 61. this 62. int *p=a; (或int *p=&a[0];)

三、程序填充,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面 1. (1) int& ARRAY:: (2) n>=s

(3) v[n] (或*(v+n))

2. (1) ARRAY:: (2) new int[n] (3) v[i]=a[i]

25