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

}

void main() {

int x=5,y=12,z=8; CE ex, *ep=&ex; ex.SetValue(x,y,z);

cout<SetValue(x+y,y-z,20); cout<GetMax()<

}

int a,b;

int getmin() {return (a

int GetMin(); int CE::GetMin() {

int d=getmin(); return (d

}

void main() {

int x=5,y=12,z=8; CE *ep; ep=new CE;

ep->SetValue(x+y,y-z,10); cout<GetMin()<

cout<

}

定义分数类 int nume; //定义分子 int deno; //定义分母

16

9. #include class CE { private: public: int c;

a=x1; b=x2; c=x3; };

10. #include

class Franction { // public:

//把*this化简为最简分数,具体定义在另外文件中实现 void FranSimp();

//返回两个分数*this和x之和,具体定义在另外文件中实现 Franction FranAdd(const Franction& x); //置分数的分子和分母分别0和1

void InitFranction() {nume=0; deno=1;} //置分数的分子和分母分别n和d

void InitFranction(int n, int d) {nume=n; deno=d;} //输出一个分数

void FranOutput() {cout<

void main() {

Franction a,b,c,d; a.InitFranction(7,12); b.InitFranction(-3,8); c.InitFranction(); c=a.FranAdd(b); d=c.FranAdd(a);

cout<<\ cout<<\ cout<<\ cout<<\ }

11. #include

class Franction { //定义分数类 int nume; //定义分子 int deno; //定义分母 public:

//把*this化简为最简分数,具体定义在另外文件中实现 void FranSimp();

//返回两个分数*this和x之和,具体定义在另外文件中实现 Franction FranAdd(const Franction& x); //置分数的分子和分母分别0和1

void InitFranction() {nume=0; deno=1;} //置分数的分子和分母分别n和d

void InitFranction(int n, int d) {nume=n; deno=d;} //输出一个分数

void FranOutput() {cout<

17

};

void main() {

Franction a,b,c,d; a.InitFranction(6,15); b.InitFranction(3,10); c.InitFranction(); c=a.FranAdd(b); d=c.FranAdd(a);

cout<<\ cout<<\ cout<<\ cout<<\ }

五、程序改错,指出错误的程序行并改正

1. 在下面的定义中,NODE是链表结点的结构,appendToList则是一函数,其功能是:在list所指向的链表的末尾添加一个新的值为x的结点,并返回表头指针。函数中有两处错误,指出错误所在行的行号并提出改正意见。 struct NODE{ int data; NODE *next; };

NODE* appendToList(NODE *list, int x){ //1行 NODE *p=new int; //2行 p->data=x; //3行 p->next=NULL; //4行 if(list==NULL) return p; //5行 NODE *p1=list; //6行 while(p1->next!=NULL) p1=p1->next; //7行 p1=p; //8行 return list; }

错误行的行号为______和________。

分别改正为______________和______________。

2. 在下面的定义中,NODE是链表结点的结构,addToList则是一函数,其功能是:将一个值为x的新结点添加到以plist为表头指针的链表的首部(即第一个结点的前面)并返回表头指针。函数中有两处错误,指出错误所在行的行号并提出改正意见。 struct NODE{

18

int data; NODE *next; };

NODE* adndToList(NODE * plist, int x){ //1行 NODE *p; //2行 *p=new NODE; //3行 p->data=x; //4行 p->next=NULL; //5行 plist=p; //6行 return p; //7行 }

错误行的行号为______和________。

分别改正为______________和______________。

3. 下面程序的主函数中第7和8行有错误,请把它们改正过来。 #include

class Franction { //定义分数类 int nume; //定义分子 int deno; //定义分母 public:

//把*this化简为最简分数,具体定义在另外文件中实现 void FranSimp();

//返回两个分数*this和x之和,具体定义在另外文件中实现 Franction FranAdd(const Franction& x); //置分数的分子和分母分别0和1

void InitFranction() {nume=0; deno=1;} //置分数的分子和分母分别n和d

void InitFranction(int n, int d) {nume=n; deno=d;} //输出一个分数

void FranOutput() {cout<

void main() //1行 { //2行 Franction a,b,c; //3行 a.InitFranction(6,15); //4行 b.InitFranction(1); //5行 c.InitFranction(); //6行 c=FranAdd(a,b); //7行 cout<

19

第7行改正为_________________________。 第8行改正为__________________________。

4. 假定要求下面程序的输出结果为“23/20”,其主函数中第6,9,10行有错误,请给予改正。 #include

class Franction { //定义分数类 int nume; //定义分子 int deno; //定义分母 public:

//把*this化简为最简分数,具体定义在另外文件中实现 void FranSimp();

//返回两个分数*this和x之和,具体定义在另外文件中实现 Franction FranAdd(const Franction& x); //置分数的分子和分母分别0和1

void InitFranction() {nume=0; deno=1;} //置分数的分子和分母分别n和d

void InitFranction(int n, int d) {nume=n; deno=d;} //输出一个分数

void FranOutput() {cout<

void main() //1行 { //2行 Franction *a=new Franction; //3行 Franction *b=new Franction; //4行 a->InitFranction(6,15); //5行 b.InitFranction(3,4); //6行 Franction c; //7行 c.InitFranction(); //8行 c=a.FranAdd(b); //9行 cout<

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

分别改正为____________________、________________和___________________。

5. 下面是一个类的定义,存在着3处语法错误,请指出错误行的行号并改正。 class CE { //1行 private: //2行 int a,b; //3行 int getmin() {return (a

20