西安石油大学《面向对象程序设计》功能与改错.docx

上传人:b****7 文档编号:9356143 上传时间:2023-02-04 格式:DOCX 页数:22 大小:24.24KB
下载 相关 举报
西安石油大学《面向对象程序设计》功能与改错.docx_第1页
第1页 / 共22页
西安石油大学《面向对象程序设计》功能与改错.docx_第2页
第2页 / 共22页
西安石油大学《面向对象程序设计》功能与改错.docx_第3页
第3页 / 共22页
西安石油大学《面向对象程序设计》功能与改错.docx_第4页
第4页 / 共22页
西安石油大学《面向对象程序设计》功能与改错.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

西安石油大学《面向对象程序设计》功能与改错.docx

《西安石油大学《面向对象程序设计》功能与改错.docx》由会员分享,可在线阅读,更多相关《西安石油大学《面向对象程序设计》功能与改错.docx(22页珍藏版)》请在冰豆网上搜索。

西安石油大学《面向对象程序设计》功能与改错.docx

西安石油大学《面向对象程序设计》功能与改错

面向对象程序设计期末综合练习五(功能与改错)

指出程序或函数的功能

1.#include

voidmain()

{

inti,s=0;

for(i=2;i<=30;i+=2)s+=i*i;

cout<<"s="<

}

2.#include

#include

#include

voidmain()

{

inti=10,a;

while(i>0){

a=rand()%100+10;

intj,k=int(sqrt(a)+1e-5);//sqrt(x)为求x的平方根函数

for(j=2;j<=k;j++)

if(a%j==0)break;

if(j>k){cout<

}

}

3.voidtrans(intx)

{

chara[10];

inti=0,rem;

do{

rem=x%16;

x=x/16;

if(rem<10)a[i]=48+rem;//’0’字符的ASCII码为48

elsea[i]=55+rem;//’A’字符的ASCII码为65

i++;

}while(x!

=0);

while(i>0)cout<

cout<

}

4.#include

doublef1(intn){

doublesign=1,s=1;

for(inti=2;i<=n;i++){

s+=sign/(i*i);

sign*=-1;

}

returns;

}

voidmain()

{

inta;

cin>>a;

cout<

}

5.doublef1(doublea,doubleb,charop){

switch(op){

case’+’:

returna+b;

case’-’:

returna-b;

case’*’:

returna*b;

case’/’:

if(b==0){

cout<<"dividedby0!

"<

exit

(1);

}

elsereturna/b;

default:

cout<<"operatorerror!

"<

exit

(1);

}

}

6.#include

#include

voidmain()

{

intx,y;

cin>>x;

y=int(sqrt(x));//sqrt(x)为求x的算术平方根

for(inti=1;i<=y;i++)

if(x%i==0)cout<<”x=”<

}

7.#include

voidmain()

{

inti,p=1,s=0;

intN;

cout<<"输入一个正整数:

";

cin>>N;

for(i=1;i<=N;i++){

p*=i;

s+=p;

}

cout<

}

8.#include

#include

#include

constN=10;

intff(intx,inty){

intz;

cout<

cin>>z;

if(x+y==z)return1;elsereturn0;

}

voidmain()

{

inta,b,c=0;

srand(time(0));//初始化随机数序列

for(inti=0;i

a=rand()%20+1;//rand()函数产生0-32767之间的一个随机数

b=rand()%20+1;

c+=ff(a,b);

}

cout<<"得分:

"<

}

9.ints1(intn)

{

intx;

if(n==1)x=1;

elsex=s1(n-1)+n*n;

returnx;

}

10.voidfun5(char*a,constchar*b)

{

while(*b)*a++=*b++;

*a=0;

}

11.template

boolfun8(Ta[],intn,Tkey)

{

for(inti=0;i

if(a[i]==key)returntrue;

returnfalse;

}

12.voidf2(doublea[],intn)

{

inti;doublesum=0;

for(i=0;i

sum/=n;

for(i=0;i

if(a[i]>=sum)cout<

cout<

}

13.voidf4(chara[M][N])

{

intc1,c2,c3;

c1=c2=c3=0;

for(inti=0;i

if(strlen(a[i])<5)c1++;

elseif(strlen(a[i])>=5&&strlen(a[i])<15)c2++;

elsec3++;

cout<

}

14.voidfun3(inta[][N],intm,int&row,int&col)

{

intx=a[0][0];

row=col=0;

for(inti=0;i

for(intj=0;j

if(a[i][j]>x){

x=a[i][j];row=i;col=j;

}

}

15.intfun6(intm,intn,intb=2)

{

if(m

elseif(m%b==0&&n%b==0)returnb*fun6(m/b,n/b,b);

elsereturnfun6(m,n,++b);

}

16.char*f8(char*str1,constchar*str2)

{

inti=0,j=0;

while(str1[i])i++;

while(str2[j])str1[i++]=str2[j++];

str1[i]='\0';

returnstr1;

}

17.intf8(constchar*str1,constchar*str2)

{

inti=0;

while(str1[i]&&str2[i])

if(str1[i]==str2[i])i++;

elseif(str1[i]>str2[i])return1;

elsereturn-1;

if(str1[i]==str2[i])return0;

elseif(str1[i]>str2[i])return1;

elsereturn-1;

}

18.IntNode*FindMax(IntNode*f)

{

if(!

f)returnNULL;

IntNode*p=f;

f=f->next;

while(f){

if(f->data>p->data)p=f;

f=f->next;

}

returnp;

}

假定IntNode的类型定义为:

structIntNode{

intdata;//结点值域

IntNode*next;//结点指针域

};

19.intCount(IntNode*f)

{

if(!

f)return0;

intc=0;

while(f){

c++;

f=f->next;

}

returnc;

}

假定IntNode的类型定义为:

structIntNode{

intdata;//结点值域

IntNode*next;//结点指针域

};

20.voidOutput(IntNode*f)

{

if(!

f)return;

while(f){

cout<data<<’’;

f=f->next;

}

cout<

}

假定IntNode的类型定义为:

structIntNode{

intdata;//结点值域

IntNode*next;//结点指针域

};

21.voidInput(IntNode*&f)

{

intn;

cout<<”从键盘给n输入一个整数:

”;

docin>>n;while(n<0);

if(n==0){f=NULL;return;}

f=newIntNode;

IntNode*p=f;

cout<<”从键盘输入”<

”;

while(n--){

p=p->next=newIntNode;

cin>>p->data;

}

p->next=NULL;

p=f;f=f->next;deletep;

}

假定IntNode的类型定义为:

structIntNode{

intdata;//结点值域

IntNode*next;//结点指针域

};

22.intf(constchar*s)

{

inti=0;

while(*s++)i++;

returni;

};

23.char*f(char*s){

intn=strlen(s);

char*r=newchar[n+1];

for(inti=0;i

if(s[i]>='a'&&s[i]<='z')r[i]=s[i]-'a'+'A';

elser[i]=s[i];

r[n]=’\0’;

returnr;

}

程序改错

1.在下面的定义中,NODE是链表结点的结构,appendToList则是一函数,其功能是:

在list所指向的链表的末尾添加一个新的值为x的结点,并返回表头指针。

函数中有两处错误,指出错误所在行的行号并提出改正意见。

structNODE{

intdata;

NODE*next;

};

NODE*appendToList(NODE*list,intx){//1行

NODE*p=newint;//2行

p->data=x;//3行

p->next=NULL;//4行

if(list==NULL)returnp;//5行

NODE*p1=list;//6行

while(p1->next!

=NULL)p1=p1->next;//7行

p1=p;//8行

returnlist;

}

错误行的行号为______和________。

分别改正为______________和______________。

2.在下面的定义中,NODE是链表结点的结构,addToList则是一函数,其功能是:

将一个值为x的新结点添加到以plist为表头指针的链表的首部(即第一个结点的前面)并返回表头指针。

函数中有两处错误,指出错误所在行的行号并提出改正意见。

structNODE{

intdata;

NODE*next;

};

NODE*adndToList(NODE*plist,intx){//1行

NODE*p;//2行

*p=newNODE;//3行

p->data=x;//4行

p->next=NULL;//5行

plist=p;//6行

returnp;//7行

}

错误行的行号为______和________。

分别改正为______________和______________。

3.假定要求下面程序的输出结果为“11/15”,其主函数中存在着三行语句错误,请指出错误语句行的行号并改正错误行。

#include

classFranction{//定义分数类

intnume;//定义分子

intdeno;//定义分母

public:

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

voidFranSimp();

//返回两个分数*this和x之和,具体定义在另外文件中实现

FranctionFranAdd(constFranction&x);

//置分数的分子和分母分别0和1

voidInitFranction(){nume=0;deno=1;}

//置分数的分子和分母分别n和d

voidInitFranction(intn,intd){nume=n;deno=d;}

//输出一个分数

voidFranOutput(){cout<

};

voidmain()//1行

{//2行

Franctiona,b,c;//3行

a.InitFranction(6,15);//4行

b.InitFranction

(1);//5行

c.InitFranction();//6行

c=FranAdd(a,b);//7行

cout<

}//9行

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

分别改正为____________________、________________和___________________。

4.假定要求下面程序的输出结果为“23/20”,其主函数中存在着三条语句错误,请指出错误语句行的行号并改正。

#include

classFranction{//定义分数类

intnume;//定义分子

intdeno;//定义分母

public:

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

voidFranSimp();

//返回两个分数*this和x之和,具体定义在另外文件中实现

FranctionFranAdd(constFranction&x);

//置分数的分子和分母分别0和1

voidInitFranction(){nume=0;deno=1;}

//置分数的分子和分母分别n和d

voidInitFranction(intn,intd){nume=n;deno=d;}

//输出一个分数

voidFranOutput(){cout<

};

voidmain()//1行

{//2行

Franction*a=newFranction;//3行

Franction*b=newFranction;//4行

a->InitFranction(6,15);//5行

b.InitFranction(3,4);//6行

Franctionc;//7行

c.InitFranction();//8行

c=a.FranAdd(b);//9行

cout<

}//11行

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

分别改正为____________________、________________和___________________。

5.下面是一个类的定义,存在着3处语法错误,请指出错误行的行号并改正。

classCE{//1行

private:

//2行

inta,b;//3行

intgetmin(){return(a

a:

b);}//4行

public//5行

intc;//6行

voidSetValue(intx1,intx2,intx3){//7行

a=x1;b=x2;c=x3;//8行

};//9行

intGetMin();//10行

};//11行

intGetMin(){//12行

intd=getmin();//13行

return(d

d:

c);//14行

}//16行

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

分别改正为____________________、________________和___________________。

6.下面程序段第4-10行中存在着三条语句的语法错误,请指出错误语句的行号并改正。

classA{//1行

inta,b;//2行

constintc;//3行

public//4行

A():

c(0);a(0);b(0){}//5行

A(intaa,intbb)c(aa+bb);{a=aa;b=bb;}//6行

};//7行

Aa,b(1,2);//8行

A*x=&a,&y=b;//9行

A*z=newA,w[10];//10行

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

分别改正为____________________、_____________________

和______________________________________。

Public:

A():

c(0),a(0),b(0){}

A(intaa,intbb):

c(aa+bb){a=aa;b=bb;}

7.下面程序段第4-9行中存在着三条语句错误,请指出错误语句的行号并说明原因。

classA{//1行

inta,b;//2行

constintc;//3行

public:

//4行

A(){a=b=c=0;}//5行

A(intaa,intbb):

c(aa+bb){a=aa;b=bb;}//6行

};//7行

Aa,b(1,2,3);//8行

Ax(2,3),y(4);//9行

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

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

8.下面程序段第10-17行中存在着三条语句错误,请指出错误语句的行号并说明原因。

classA{//1行

inta;//2行

public:

//3行

A(intaa=0):

a(aa){}//4行

};//5行

classB{//6行

inta,b;//7行

constintc;//8行

Ad;//9行

public:

//10行

B():

c(0){a=b=0;}//11行

B(intaa,intbb):

d(aa+bb){//12行

a=aa;b=bb;c=aa-bb;//13行

}//14行

}//15行

Ba,b(1,2);//16行

Bx=a,y(b),z(1,2,3),;//17行

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

错误原因分别为_____________________、______________________

和_____________________。

9.假定要求下面程序输出结果为“d=800,f=60”,在第4-23行中存在着三条语句错误,请指出错误语句的行号并改正。

#include

classA{//1行

inta[10];intn;//2行

public:

//3行

A(intaa[],intnn):

n(nn){//4行

for(inti=0;i

}//6行

intGet(inti){returna[i];}//7行

intSumA(intn);//8行

};//9行

intA:

:

SumA(intn){//10行

ints=0;//11行

for(intj=0;j

returns;//13行

}//14行

voidmain(){//15行

inta[]={2,5,8,10,15,20};//16行

Ax(a,6);//17行

intd=1;//18行

for(inti=0;i<4;i++)d*=x.a[i];//19行

intf=SumA(6);//20行

cout<<"d="<

cout<<"f="<

}//23行

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

51920

分别改正为____________________、________________和___________________。

10.下面是分数类fract的定义及测试主程序,在类定义及其友元函数定义中有两处错误,更正错误后程序应显示41/28,请指出错误所在行的行号并给出改正意见。

classfract{

intden;//分子

intnum;//分母

publi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1