国家二级C++机试(操作题)模拟试卷345
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:
1
5
1
注意:错误的语句在//********error********的下面,修改该语句即可。
#include
//********error********
enum
{
Sun,
Mon,
Tue,
Wed,
Thu,
Fri,
Sat,
//********error********
}MyEnum;
struct struct
{
**********error********
int Fri,
int Sun;
};
Void main()
{
int i=Mon;
MyEnum t=Fri;
struct str1;
str1.Fri=Mon;
cout<<i<<endl;
cout<<t<<endl;
cout<<str1.Fri<<endl;
}
(1)enum MyEnum
(2)};
(3)int Fri;
解析:(1)第一标识下声明枚举类型,声明枚举类型的一般形式为:“enum{};”,程序当中把枚举类型名MyEnum放到枚举声明后面,显然不符合枚举类型声明格式,因此第1个标识下应改成“enum MyEnum”。
(2)由(1)的分析可知,第2个标识下也不符合枚举类型声明格式,应以“:”结束,即第2个标识下应改为“};”。
(3)第3标识处声明结构体,结构体定义的一般形式为:
struct
{
};
结构体中成员列表中各个元素是不同的变量,变量之间应以分号隔开,而不是以逗号隔开,因此第3个标识下应改为为“int Fri;”。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.clap。阅读下列函数说明和代码,实现函数sort(intA[],int n),用选择排序法把数组从大到小排序。
提示:选择排序法的思想是:
(1)反复从还未排好的那部分线性表中选择出关键字最小的节点;
(2)按照从线性表中选择出的顺序排列节点,重新组成线性表;
(3)直到未排序的那部分为空,则重新形成的线性表是一个有序的线性表。
补充函数sort(intA[],int n),实现选择排序。
注意:请勿改动主函数。
#include
#define N 10
void sort(int A[N],int n)
{
}
int main()
{
int A[N]={1,2,10,5,7,19,34,
78,-3,8};
sort(A,10);
for(int i=0;i<Sizeof(A)/
sizeof(int);i++)
{
cout<<A[i]<<’ ’;
}
cout<<endl;
return 0;
}
int i,j;
for (i=0;i<n-1;i++)
{
for (j=0;j<n-1-i;j++)
{
if(A[j]>A[j+1])
//如果前面的数比后面的大则进行交换
{
int t=A[j];//做交换
A[j]=A[j+1];
A[j+1] =t;
}
}
}
解析:(1)数组A[N]中有n个数,进行n-1趟比较,在每一趟比较中两两比较的次数逐渐减少,比如若有6个数9,8,5,4,2,0。第一次将8和9对调,第二次将第2和第3个数(9和5)对调,……,如此共进行5次,得到8-5-4-2-0.9的顺序,可以看到:最大的数9已“沉底”,成为最下面一个数,而小的数“上升”。最小的数0已向上“浮起”一个位置。经第一趟(共5次)后,已得到最大的数。然后进行第二趟比较,对余下的前面5个数按上法进行比较,经过4次比较,得到次大的数8。如此进行下去。可以推知,6个数要比较5趟。在第一趟中要进行两两比较5次,在第二趟中比4次,……第5趟比1次。因此设置两层循环,外层循环变量i从0变化大到n-1,内层循环变量i从0到n-i,在内层循环体内,比较相邻两数,如果前面比后面的大则交换。
(2)在内层循环体内,如果前面的元素比后面的元素大,则用一个临时变量记录前面的第i个元素,然后将第j+1个元素赋值给第i个元素,临时变量值赋给第i+1个元素,如此完成两个元素的交换。
综合应用题
3.使用VC6打开考生文件夹下的源程序文件modi3.cpp。程序通过继承关系,实现对姓名的控制。类TestClass1实现对名字访问的接口,TestClass2实现对名字的设置和输出。
程序输出为:
TestClass2Name
May
其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)在类TestClass1中定义接口函数GetName,为纯虚函数。请在注释//********1********后添加适当的语句。
(2)函数GetName2()实现获得名字的缓存,但是只获得读允许操作这个缓存,请在注释
//********2********后添加适当的语句。
(3)实现TestClass2的构造函数,请在注释
//********3********后添加适当的语句。
(4)完成TestClass2的构造函数,实现对名字的处理。请在注释//********4********后添加适当的语句。
注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。
#include
Class TestClass1
{
public:
//********1********
};
class TestClass2:public TestClass1
{
public:
Void GetName()
{
cout<<\\
(1)添加语句:virtual void GetName()=0;
本文档预览:3600字符,共4257字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载