题库 题库

【简答题】

使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成以下两个函数。
(1)funl(intn)求出n的阶乘,必须使用递归调用。
(2)fun2(intn)求出n的阶乘,不能使用递归调用。如果n小于1则返回0。
注意:不能修改函数的其他部分。
试题程序:
#include
//必须使用递归
intfunl(intn)
{
}
//不能使用递归
intfun2(intn)
{
}
voidmain()
{
inti;
cout<<"请输入一个整数:"<
cin>>i;
cout<<"输入数字的阶乘是:"<<funl(i)<
cout<<"输入数字的阶乘是:"<<fun2(i)<
return;
}

参考答案

//必须使用递归
jntFunl(intn)
{
iF(n<=0)rEturn0;
iF(n==1)rEturn1;
rEturnn*Funl(n-1);
};
//不能使用递归
intFun2(intn)
{
iF(n<=0)rEtturn0;
intrEs=1:
For(inti=1;
i<=n;i++)
{
rEs*=i;
}
rEturnrEs;
}

相关试题

单选题 类A是类B的友元,类B是类C的友元,则下列说法正确的是(  )。 查看答案
单选题 派生类的成员函数不能访问基类的(  )。 查看答案
单选题 有如下程序:
#include
usingnamespacestd;
classDA{
intk;
public:
DA(intx=1):k(x){}
~DA(){cout<<k;}
};
intmain(){
DAd[]={DA(3),DA(3),DA(3));
DA+p=newDA[2];
delete[]p;
return();
}
这个程序的输出结果是(  )。
查看答案
单选题 有下列程序:
#include
voidmain(  )
{char*a[]={"abed","ef","gh","ijk");inti;
for(i=0;i<4;i++)printf("%C",*a[i]);
}
程序运行后的输出结果是(  )。
查看答案
单选题 下列表达式的值为false的是(  )。 查看答案
单选题 有如下程序:
#include
usingnamespacestd;
classToy{
public:
Toy(char*_n){strcpy(name,_n);count++;)
~Toy(  ){count一一;)
char*GetName(  ){returnname;}
staticintgetCount(  ){returncount;)
private:
charname[10];
staticintcount;
};
intToy::count=0;
intmain(  ){
Toyt1("snoopy"),t2("Mickey"),t3("Barbie");
tout<<
return0;
)
运行时的输出结果是(  )。
查看答案
单选题 有如下的程序:
#include
#include
usingnamespacestd;
classMyString
{public:
MyString(constchar*s);
MyString(){delete[]data;}
protected:
unsignedlem
char*data;};
MyStrin9::MyString(constchar*s)
{len=strlen(s);
data=newchar[len+1];
strcpy(data,s);}
intmain()
{MyStringa("C++Programing");
MyStringb(a);
return0;}
在运行上面的程序时出错,出错的原因是(  )。
查看答案
单选题 下列叙述中错误的是(  )。 查看答案
单选题 有如下程序:
#included
usingnamespacestd;
classTestClass
{inta;
pubIic:
TestClass(intx){a=x;}
voidshow(){cout<
classTestClassl:publicTestClass
{intb;
public:
TestClassl(inti):TestClass(i+1),b(i){}
voidshow(){cout<
intmain()
{TestClassb(5),*P;
TestClassld(1):
p=&d;
p->show();
return0;}
该程序运行后的打印结果是(  )。
查看答案
单选题 有如下程序:
#include
usingnamespacestd;
classMyClass{
public:
MyClass(intx):val(x){}
voidPrint()const{cout<<"const:val="<<<val<<'\t';}
voidPrint(){cout<<"val="<<val<<'t';}
private:
intval;
};
intmain(){
constMyClassobj1(10);
MyClassobj2(20);
obj1.Print();
obj2.Print();
return0;
}
程序的输出结果是(  )。
查看答案
单选题 有如下程序:
#include
usingnamespacestd;
classTestClass
{public:
virtualvoidfunl()
{cout<<"funlTestClass";}
virtualvoidfun2()
{cout<<“fun2TestClass”;}};
classTestClassl:publicTestClass
{voidfun()
{cout<<“funlTestClassl”;}};
intmain()
{TestClassobj1,*P;
TestClasslobj2;
p=&obj2;
p->fun1();
p->fun2();
return0;}
该程序执行后的输出结果是(  )。
查看答案
单选题 下列叙述中正确的是(  )。 查看答案
单选题 下列叙述中错误的是(  )。 查看答案
单选题 若有定义语句“inti=2,j=3;”,则表达式i/j的结果是(  )。 查看答案
单选题 下面描述中错误的是(  )。 查看答案
单选题 设有下列程序段:
chars[20]="Beijing",*P;
P=S;
则执行“p=s;”语句后,下列叙述正确的是(  )。
查看答案
单选题 下列程序段中的变量已正确定义:
for(i=0;i<4;i++,i++)
for(k=1;k<3;k++);printf("*");
程序段的输出结果是(  )。
查看答案
单选题 下列语句中,与语句“n=(a>b?(b>c?1:0):0);”的功能等价的是(  )。 查看答案
单选题 已经有“语句intm=10;”则下列表示引用的表示中正确的是(  )。 查看答案
单选题 有下列程序:
#include
#defineN4
voidfun(inta[][N],intb[])
{inti;
for(i=0;i
}
voidmain(  )
{intx[][N]={{1,2,3},{4),{5,6,7,8),{9,10}),
y[N],i;
fun(x,y);
for(i=0;i
printf("\n");
}
程序的运行结果是(  )。
查看答案