西安石油大学《面向对象程序设计》功能与改错Word文档下载推荐.docx
《西安石油大学《面向对象程序设计》功能与改错Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《西安石油大学《面向对象程序设计》功能与改错Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
exit
(1);
elsereturna/b;
default:
coutoperatorerror!
6.#include#includevoidmain()intx,y;
cinx;
y=int(sqrt(x);
/sqrt(x)为求x的算术平方根for(inti=1;
i=y;
i+)if(x%i=0)cout”x=”i*x/iendl;
7.#includevoidmain()inti,p=1,s=0;
intN;
coutN;
for(i=1;
i=N;
i+)p*=i;
s+=p;
coutsendl;
8.#include#include#includeconstN=10;
intff(intx,inty)intz;
coutx+yz;
if(x+y=z)return1;
elsereturn0;
voidmain()inta,b,c=0;
srand(time(0);
/初始化随机数序列for(inti=0;
iN;
i+)a=rand()%20+1;
/rand()函数产生0-32767之间的一个随机数b=rand()%20+1;
c+=ff(a,b);
cout得分:
c*10endl;
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.templateboolfun8(Ta,intn,Tkey)for(inti=0;
in;
i+)if(ai=key)returntrue;
returnfalse;
12.voidf2(doublea,intn)inti;
doublesum=0;
for(i=0;
i+)sum+=ai;
sum/=n;
i=sum)coutai;
13.voidf4(charaMN)intc1,c2,c3;
c1=c2=c3=0;
for(inti=0;
iM;
i+)if(strlen(ai)=5&
strlen(ai)15)c2+;
elsec3+;
coutc1c2c3endl;
14.voidfun3(intaN,intm,int&
row,int&
col)intx=a00;
row=col=0;
im;
i+)for(intj=0;
jx)x=aij;
row=i;
col=j;
15.intfun6(intm,intn,intb=2)if(mb&
nstr2i)return1;
elsereturn-1;
if(str1i=str2i)return0;
elseif(str1istr2i)return1;
18.IntNode*FindMax(IntNode*f)if(!
f)returnNULL;
IntNode*p=f;
f=f-next;
while(f)if(f-datap-data)p=f;
returnp;
假定IntNode的类型定义为:
structIntNodeintdata;
/结点值域IntNode*next;
/结点指针域;
19.intCount(IntNode*f)if(!
f)return0;
intc=0;
while(f)c+;
returnc;
20.voidOutput(IntNode*f)if(!
f)return;
while(f)coutdatanext;
21.voidInput(IntNode*&
f)intn;
coutn;
while(n0);
if(n=0)f=NULL;
return;
f=newIntNode;
cout”从键盘输入”nnext=newIntNode;
cinp-data;
p-next=NULL;
p=f;
deletep;
22.intf(constchar*s)inti=0;
while(*s+)i+;
returni;
23.char*f(char*s)intn=strlen(s);
char*r=newcharn+1;
i=a&
sidata=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为表头指针的链表的首部(即第一个结点的前面)并返回表头指针。
函数中有两处错误,指出错误所在行的行号并提出改正意见。
structNODEintdata;
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”,其主函数中存在着三行语句错误,请指出错误语句行的行号并改正错误行。
#includeclassFranction/定义分数类intnume;
/定义分子intdeno;
/定义分母public:
/把*this化简为最简分数,具体定义在另外文件中实现voidFranSimp();
/返回两个分数*this和x之和,具体定义在另外文件中实现FranctionFranAdd(constFranction&
x);
/置分数的分子和分母分别0和1voidInitFranction()nume=0;
deno=1;
/置分数的分子和分母分别n和dvoidInitFranction(intn,intd)nume=n;
deno=d;
/输出一个分数voidFranOutput()coutnume/denoendl;
voidmain()/1行/2行Franctiona,b,c;
/3行a.InitFranction(6,15);
/4行b.InitFranction
(1);
/5行c.InitFranction();
/6行c=FranAdd(a,b);
/7行coutc.nume/c.denoendl;
/8行/9行错误行的行号为_、_和_。
分别改正为_、_和_。
4.假定要求下面程序的输出结果为“23/20”,其主函数中存在着三条语句错误,请指出错误语句行的行号并改正。
/输出一个分数voidFranOutput()coutnume/denoInitFranction(6,15);
/5行b.InitFranction(3,4);
/6行Franctionc;
/7行c.InitFranction();
/8行c=a.FranAdd(b);
/9行coutc.FranOutput()endl;
/10行/11行错误行的行号为_、_和_。
5.下面是一个类的定义,存在着3处语法错误,请指出错误行的行号并改正。
classCE/1行private:
/2行inta,b;
/3行intgetmin()return(ab?
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(dc?
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,w10;
/10行错误行的行号为_、_和_。
分别改正为_、_和_。
Public:
A():
c(0),a(0),b(0)A(intaa,intbb):
c(aa+bb)a=aa;
7.下面程序段第4-9行中存在着三条语句错误,请指出错误语句的行号并说明原因。
/3行public:
/4行A()a=b=c=0;
/5行A(intaa,intbb):
/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;
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行中存在着三条语句错误,请指出错误语句的行号并改正。
#includeclassA/1行inta10;
intn;
/3行A(intaa,intnn):
n(nn)/4行for(inti=0;
i+)aai=ai;
/5行/6行intGet(inti)returnai;
/7行intSumA(intn);
/8行;
/9行intA:
SumA(intn)/10行ints=0;
/11行for(intj=0;
jn;
j+)s+=aj;
/12行returns;
/13行/14行voidmain()/15行inta=2,5,8,10,15,20;
/16行Ax(a,6);
/17行intd=1;
/18行for(inti=0;
i4;
i+)d*=x.ai;
/19行intf=SumA(6);
/20行coutd=d,;
/21行coutf=fendl;
/22行/23行错误行的行号为_、_和_。
51920分别改正为_、_和_。
10.下面是分数类fract的定义及测试主程序,在类定义及其友元函数定义中有两处错误,更正错误后程序应显示41/28,请指出错误所在行的行号并给出改正意见。
classfractintden;
/分子intnum;
/分母public:
fract(intd=0,intn=1):
den(d),num(n)/1行friendfract&
operator+=(fract,fract&
);
/2行voidshow()coutden/next=p;
2.35p=newNODE;
p-next=plist;
3.578b.InitFranction(1,3);
c=a.FranAdd(b);
c.FranOutput()4.6910b-InitFranction(3,4);
c=a-FranAdd(*b);
c.FranOutput()5.5912public:
intCE:
GetMin()6.456Public:
7.589在函数体给常量c赋值定义b多一个参数定义y少一个参数8.131517在函数体给常量c赋值缺少分号定义z多一个参数9.51920ai=aai;
d*=x.Get(i);
intf=x.SumA(6);
10.25friendfract&
operator+=(fract&
fract);
fract&
f1,fractf2);