出自:许昌学院面向对象程序设计
[应用题,25分] #include
fun(int *s,int n1,int n2)
{ int t;
while(n1<>
{t=*(s+n1);
*(s+n1)=*(s+n2);
*(s+n2)=t;
n1++;n2--; }
}
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a;
fun(p,0,3);fun(p+3,1,6);
for(i=0;i<10;i++)
{ if(i%5= =0)cout<<>
cout<
}
运行结果:
[应用题,25分] #include
# include
void fun(char *w,int m)
{char s,*p1,*p2;
p1=w;
p2=w+m-1;
while(p1<>
{
s=*p1;*p1=*p2;*p2=s;
p1++;
p2--;
}
}
main()
{
char a[10]="abcdefghi";
char *p=new char[10];
strcpy(p,"student");
cout<<"compare:"<<>
if(strcmp(a,p)==0)
cout<<"a == p"<<>
if(strcmp(a,p)>0)
cout<<"a > p"<<>
if(strcmp(a,p)<0)
cout<<"a < p"<<>
cout<<"before:\n";
cout<<><>
cout<<><>
cout<<"call fun"<<>
fun(a,strlen(a));
fun(p,strlen(p));
cout<<"after:\n";
cout<<><>
cout<<><>
}
程序运行结果为:
[应用题,25分] #include
float const PI=3.14;
class point
{
private:
float x,y,area;
public:
point(float x1=0.0,float y1=0.0)
{
cout<<"point构造函数被调用!\n";
}
virtual ~point()
{
cout<<"point析构函数被调用!\n";}
virtual float getarea(){return 0.0;}
};
class circle:public point
{private:
float r;
public:
circle(float x1,float y1,float Nr):point(x1,y1)
{
r=Nr;
cout<<"circle构造函数被调用!\n ";
}
~circle(){cout<<"circle析构函数被调用!\n";}
float getarea()
{
return PI*r*r;
}
};
void main()
{
point *p,p1(3,4);
p=&p1;
cout<getarea()<
circle c(1,1,1);
p=&c;
cout<getarea()<<>
}
程序运行结果为:
[应用题,7.6分] 以下程序输入三个整数值给a,b,c,程序把b中的值给a,把c中的值给b,把a中的值给c,然后输出a,b,c的值。请填空。
#include
main()
{
int a,b,c;
int temp;
cout<<"Enter a,b,c:";
cin>>a>>b>>c;
temp=[ ];
a=b;
b=[ ];
[ ]
cout<<"a="<<a<<" b="<<b<<" c="<<>
}
[应用题,7.6分] 斐波那契数列中的头两个数是0和1,从第三个数开始,每个数等于前两个数的和,即:0,1,1,2,3,5,8,13,21,...等。下面这个程序就是求斐波哪契数列的前20个数。请填空。
#include
void main()
{
int f,f1,f2,i;
f1=0;f2=1;
cout<<><><><>
for(i=3;i<=20;[ ])
{
f=[ ];
cout<<><>
f1=f2;
f2=[ ];
}
}
[应用题,7.6分] 以下程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。
#define M 2
#define N 4
void SumColumMin(int a[M][N],int *sum)
{ int i,j,k,s=0;
for(i=0;i<>
{ k=0;
for(j=1;j<>
if(a[k][i]>a[j][i])k=j;
s+=[ ];
}
[ ]=s;
}
void main()
{ int x[M][N]={3,2,5,1,4,1,8,3},s;
SumColumMin([ ]);
cout<<><>
}
[应用题,7.6分] 以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。请填空:
#define N 3
#define M 4
void LineMax(int x[N][M])
{ int i,j,p;
for(i=0;i<>
{ p=0;
for(j=1;j<>
if(x[i][p]
cout<<"The max value in line "<<><" is=""><[><>
}
}
main()
{ int x[N][M]={1,.5,7,4,2,6,4,3,8,2, 3,1};
[ ];
}