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

___(3)___; x.PrintA(); cout<

该程序运行结果为: 23 25 46 55 62 76 78 90 90

(1) (2) (3)

9. 已知一个利用数组实现栈的类定义如下: const int ARRAY_SIZE=10; class Stack { public:

void Init() {top=-1;} //初始化栈为空

void Push(int newElem); //向栈中压入一个元素 int Pop(); //从栈顶弹出一个元素 bool Empty() { //判栈空

if(top==-1) return true;else return false;} int Depth() {return top+1;} //返回栈的深度 void Print();

//按照后进先出原则依次输出栈中每个元素,直到栈空为止 private:

int elem[ARRAY_SIZE]; //用于保存栈元素的数组 int top; //指明栈顶元素位置的指针 };

void Stack::Push(int newElem) { if(___(1)___) {

cout<<\栈满!\ exit(1); //中止运行 }

___(2)___;

elem[top]=___(3)___; }

(1) (2) (3)

10. 已知一个利用数组实现栈的类定义如下: const int ARRAY_SIZE=10; class Stack {

11

public:

void Init() {top=-1;} //初始化栈为空

void Push(int newElem); //向栈中压入一个元素 int Pop(); //从栈顶弹出一个元素 bool Empty() { //判栈空

if(top==-1) return true;else return false;} int Depth() {return top+1;} //返回栈的深度 void Print();

//按照后进先出原则依次输出栈中每个元素,直到栈空为止 private:

int elem[ARRAY_SIZE]; //用于保存堆栈元素的数组 int top; //指明栈顶元素位置的指针 };

该类的Pop和Print函数的实现分别如下: ___(1)___ {

if(top==-1) {

cout<<\栈空!\ exit(1); //中止运行 }

return ___(2)___; }

void Stack::Print() { while(!Empty())

cout<<___(3)___ <<' '; }

(1) (2) (3)

四、写出程序运行结果 1. #include void main() {

int a[10]={76,83,54,62,40,75,90,92,77,84}; int b[4]={60,70,90,101}; int c[4]={0};

for(int i=0;i<10;i++) { int j=0;

while(a[i]>=b[j]) j++; c[j]++; }

for(i=0;i<4;i++) cout<

12

cout<

2. #include #include void main() {

char a[5][10]={\ char s1[10], s2[10];

strcpy(s1,a[0]); strcpy(s2,a[0]); for(int i=1;i<5;i++) {

if(strcmp(a[i], s1)>0) strcpy(s1,a[i]); if(strcmp(a[i], s2)<0) strcpy(s2,a[i]); }

cout<

3. #include const int N=5; void fun(); void main() {

for(int i=1; i

void fun() {

static int a; int b=2;

cout<<(a+=3,a+b)<<' '; }

4. #include void main() {

char s[3][5]={\ char *p[3];

for(int I=0;I<3;I++) p[I]=s[I]; for(I=2;I>=0;I--) cout<

5. #include

13

void main() {

int i,j,len[3];

char a[3][8]={\ for(i=0;i<3;i++) { for(j=0;j<8;j++)

if(a[i][j]=='\\0') { len[i]=j;break; }

cout<

6.

#include #include class CD { char* a; int b; public:

void Init(char* aa, int bb) {

a=new char[strlen(aa)+1]; strcpy(a,aa); b=bb; }

char* Geta() {return a;} int Getb() {return b;}

void Output() {cout<

CD dy;

dx.Init(\

dy.Init(\ dx.Output(); dy.Output(); }

7.#include #include

14

class CD { char* a; int b; public:

void Init(char* aa, int bb) {

a=new char[strlen(aa)+1]; strcpy(a,aa); b=bb; }

char* Geta() {return a;} int Getb() {return b;}

void Output() {cout<

CD dx,dy; char a[20];

dx.Init(\ strcpy(a,dx.Geta()); strcat(a,\

dy.Init(a,dx.Getb()+20); dx.Output(); dy.Output(); }

8. #include class CE { private: int a,b;

int getmax() {return (a>b? a:b);} public: int c;

void SetValue(int x1,int x2, int x3) { a=x1; b=x2; c=x3; }

int GetMax(); };

int CE::GetMax() {

int d=getmax(); return (d>c? d:c);

15