国家二级C++机试(操作题)模拟试卷471
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为:
Max is 7
提示:max()数实现找出两个数中的最大值,并作为函数值返回。
注意:错误的语句在 //******error******的下面,修改该语句即可。
#include
using namespace std;
//******error******
int max(int a,int b)
{
if(a<b)
{
int t=a;
a=b;
b=t;
}
return b;
}
int main()
{
int m=-3;
int n=7;
//******error******
max(-3,n);
cout<<\\
(1)int max(int&a,int&b)
(2)max(m,n);
解析:(1)max函数采用的是传送引用方式传递参数,因此第1个标识下应该为int max(int&a,int ab)。
(2)调用max时,传递引用时直接使用变量名即可,第2个标识下应改为“max(m,n)”。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分的程序。实现函数sort(intA[],int n),用冒泡法将数组排序。
提示:所谓冒泡法,就是每次把相邻的两个数交换,较大的数交换到后面。这样下标从0到n-1的数与其后面相邻的数交换,可以把最大的数交换到数组的末端。进行n次下标从0到n-1的交换,则数组则会变成有序的,而且是由大到小的顺序。
注意:不能修改程序的其他部分,并且不能删除其他的部分,也不能修改程序的结构。
#include
#define N 10
void sort(int A[N],int n)
{
}
int main()
{
int A[N]={5,7,4,6,10,13,78,-4,9,20};
sort(A,10);
for(int i=0;i<sizeof(A)/
sizeof(int);i++)
{
cout<<A[i]<<’ ’;
}
cout<<end1;
return 0;
}
int i,j,k,t;
for( i=0;i<n-1;i++)
{
for(k=i,j=i+1;j<n;j++)
if(A[k]<A[j])//如果前面的比后面的小则需要交换
k=j;
if(k!=i) //交换
{
t=A[i];
A[i] =A[k];
A[k] =t;
}
}
解析:(1)以数组“A[]={3,8,7,6,5,0,1,2,9,4}”为例来说明具体的排序过程,第一次选择:第一步从A[0]-A[9]中找最大值max及下标k,max=9,k=8;第二步交换a[0]与最大值a[8]的值;第一次结束后a[0]已存放了最大值,下一次比较就不必再经过它了,而从a[1]开始,如此循环。从例中可以看出10个元素要进行九次比较,n个元素要进行n-1次比较。设置两层循环,外层循环变量i从0到n.1,内层循环变量从i开始到n-1,在内层循环中找最大值,如果最大值的下标k和i不同,则交换,实现选择法排序。
(2)在内层循环体内,如果最大值的下标k和i不同,则用一个临时变量记录第i个元素,然后将第k个元素赋值给第i个元素,临时变量值赋给第k个元素,如此完成两个元素的交换。
综合应用题
3.使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:
(1)利用define定义常量TRUE为1,定义常量FALSE为0,请在注释//********1********后添加适当的语句。
(2)在类A2前增加A1的声明,请在注释//********2********后添加适当的语句。
(3)在类C1中声明友元函数bool fune(A2&a,A1&b),请在注释//********3********后添加适当的语句。
(4)实现函数bool func(A2&obj1,Al&obj2)功能,检查两个类的值都为TRUE,则返回TRUE,请在注释//********4********后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
#include
//********1********
#define FALSE 0
//********2********
Class A2
{
private:
bool m_A2;
friend bool func(A2&obj1,
A1&obj2);
public:
A2()
{
m_A2=FALSE;
}
public:
void setA2(bool n)
{
m_A2=n;
}
};
class A1
{
private:
bool m A1;
//********3********
public:
A1()
{
m_A1=TRUE;
}
public:
void setA1(bool n)
{
m_A1=n;
}
};
bool func(A2&obj1,A1&obj2)
{
//********4********
return
}
int main()
{
A2 obj0;
A1 obj1;
cout<<func(obj0,obj1)<<end1;
obj0.setA2(TRUE);
obj1.se
本文档预览:3600字符,共4278字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载