2013年9月计算机二级C++无纸化预测试题及答案二
2013-12-20来源/作者:管理员点击次数:327
一、选择题
1.数据结构作为计算机的一门学科,主要研究数据逻辑结构、对各种数据结构进行运算,及( )
A.数据的存储结构
B.计算方法
C.数据映象
D.逻辑存储
【参考答案】 A
2.在计算机中,算法是指( )
A.加工方法
B.解题方案的准确而完整的描述
C.排序方法
D.查询方法
【参考答案】 B
3.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做( )
A.软件投机
B.软件危机
C.软件工程
D.软件产生
【参考答案】 B
4.开发大型软件时,产生困难的根本原因是( )
A.大系统的复杂性
B.人员知识不足
C.客观世界千变万化
D.时间紧、任务重
【参考答案】 A
5.数据库、数据库系统和数据库管理系统之间的关系是( )
A.数据库包括数据库系统和数据库管理系统
B.数据库系统包括数据库和数据库管理系统
C.数据库管理系统包括数据库和数据库系统
D.3者没有明显的包含关系
【参考答案】 B
6.下列叙述中正确的是( )
A.线性表是线性结构
B.栈与队列是非线性结构
C.线性链表是非线性结构
D.二叉树是线性结构
【参考答案】 A
7.已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是( )
A.堆排序
B.直接插入排序
C.快速排序
D.直接选择排序
【参考答案】 B
8.下列不属于结构化分析的常用工具的是( )
A.数据流图
B.数据字典
C.判定树
D.PAD图
【参考答案】 A
9.下列工具中为需求分析常用工具的是( )
A.PAD
B.PFD
C.N-S
D.DFD
【参考答案】 D
10.数据库的故障恢复一般是由( )
A.数据流图完成的
B.数据字典完成的
C.DBA完成的
D.PAD图完成的
【参考答案】 C
11.关于C++与C语言关系描述中错误的是( )
A.C++语言是C语言的超集
B.C++语言对C语言进行了扩充
C.C++语言包含C语言的全部语法特征
D.C++语言与C语言都是面向对象的程序设计语言
【参考答案】 D
12.在C++语言中,不合法的实型数据的是( )
A.0.123
B.123e3
C.2.1e3.5
D.123.0
【参考答案】 C
13.下面有关于for循环的正确描述是( )
A.for循环只能用于循环次数已经确定的情况
B.for循环是先执行循环体语句,后判断表达式
C.在for循环中,不能用break语句跳出循环体
D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
【参考答案】 D
14.假定int类型变量占用两个字节,其有定义int x[10]={0,2,4};,则数组x在内存中所占字节数是( )
A.3
B.6
C.10
D.20
【参考答案】 D
15.以下叙述正确的是( )
A.函数可以嵌套定义但不能嵌套调用
B.函数既可以嵌套调用也可以嵌套定义
C.函数既不可以嵌套定义也不可以嵌套调用
D.函数可以嵌套调用但不可以嵌套定义
【参考答案】 D
16.下面的语句中错误的是( )
A.int a=5;int x[a];
B.const int a=5;int x[a];
C.int n=5;int *p=new int[a];
D.const int n=5;int *p=new int[a];
【参考答案】 A
17.关于二义性的描述错误的是( )
A.一个子类的两个父类中都有某个同名成员,在子类中对该成员访问可能出现二义性
B.解决二义性可以用对成员名的限定法
C.父类和子类中同时出现同名函数,也可能存在二义性
D.一个子类是从两个父类派生出来的,而这两个父类又有一个共同的父类,对该父类成员进行访问时,可能出现二义性
【参考答案】 C
18.函数模板:template
T add(T x,T y) {return x+y;}
下列对add函数的调用不正确的是( )
A.add< >(1,2)
B.add(1,2)
C.add(1.0,2)
D.add(1.0,2.0)
【参考答案】 C
19.this指针是C++实现什么的一种机制?( )
A.抽象
B.封装
C.继承
D.重载
【参考答案】 B
20.下列程序的输出结果是( )
#include
class Myclass{
public:Myclass(int i=0,int j=0)
{
y=j;
}
void show(){cout<<″x=″
25.下列选项,不正确的是( )
A.for(int a=1;a<=10;a++);
B.int a=1;
do
{a++}
while(a<=10)
C.int a=1;
D.for(int a=1;a<=10;a++)a++;
while(a<=10)
{a++}
【参考答案】 B
26.下列程序的输出结果为( )
#include
void main()
{char *a[]={″hello″,″the″,″world″};
char **pa=a;
pa++;
cout<<*pa<
A.hello
B.the C.world
D.hellotheworld
【参考答案】 B
27.下列程序的输出结果是( )
#include
int min(int a,int b)
{if(a
else return b;
return 0;}
void main()
{cout<
A.0
B.1
C.2
D.3
【参考答案】 B
28.对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( )
A.公有类型
B.私有类型
C.保护类型
D.友元类型
【参考答案】 D
29.类的析构函数的作用是( )
A.一般成员函数的初始化
B.类的初始化
C.对象的初始化
D.删除类创建的对象
【参考答案】 D
30.下面对静态数据成员的描述中,正确的是( )
A.静态数据成员可以在类体内进行初始化
B.静态数据成员不可以被类的对象调用
C.静态数据成员不能受private控制符的作用
D.静态数据成员可以直接用类名调用
【参考答案】 D
31.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )
A.派生类的对象可以赋给基类的对象
B.派生类的对象可以初始化基类的引用
C.派生类的对象可以直接访问基类中的成员
D.派生类的对象的地址可以赋给指向基类的指针
【参考答案】 C
32.下列关于虚基类的描述,错误的是( )
A.设置虚基类的目的是为了消除二义性
B.虚基类的构造函数在非虚基类之后调用
C.若同一层中包含多个虚基类,这些基类的构造函数按它们说明的次序调用
D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数
【参考答案】 B
33.下列运算符中,在C++语言中不能重载的是( )
A.*
B.>=
C.::
D./
【参考答案】 C
34.下列程序的运行结果是( )
#include
class A
{ int a;
public:
A() {a=0;}
A(int aa)
{a=aa;
cout<
void main()
{A x,y(2),z(3);
cout<
A.00
B.23
C.34
D.25
【参考答案】 B
35.判断char型变量c是否为小写字母的正确表达式是( )
A.′a′<=c<=′z′
B.(c>+A)&&(c<=z)
C.(′a′>=c)||(′z′<=c)
D.(c>=′a′)&&(c<=′z′)
【参考答案】 D
二、填空题
1.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【1】。
【参考答案】
【1】n/2
2.类是一个支持集成的抽象数据类型,而对象的类的【2】。
【参考答案】
【2】实例
3.当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【3】。
【参考答案】
【3】物理独立性
4.若串s=″MathTypes″,则其子串的数目是【4】。
【参考答案】 http://ks.exam8.com
【4】46
5.关系数据库的关系演算语言是以【5】为基础的DML语言。
【参考答案】
【5】谓词演算
6.程序
#include″inostream.h″
void main()
{int i=10;
int j=5;
cout<
的结果为【6】。
【参考答案】
【6】15
7.语句int *i;i=new int[10];,释放指针i的语句是【7】。
【参考答案】
【7】delete[]I
8.在C++语言中每个类都有一个【8】指针,该指针指向正在调用成员函数的对象。
【参考答案】
【8】this
9.程序的结果为【9】。
#include ″iostream.h″
template
T total(T *data)
{ T s=0;
while( *data)
{s+=*data++;}
return s; }
int main()
{ int x[]={2,4,6,8,0,12,14,16,18};
cout<
return 0;
cout<
【参考答案】
【9】20
10.一个C++语言程序的开发步骤通常包括编辑、【10】、链接、运行和调试。
【参考答案】
【10】编译
11.下面程序的运行结果是【11】和【12】。
#include
#define N 10
#define s(x)x*x
#define f(x)(x*x)
void main()
{ int i1,i2;
i1=1000/s(N);i2=1000/f(N);
cout<
【参考答案】
【11】1000 【12】10
12.【13】是实现C++语言编译时多态性的机制,【14】是实现C++语言运行时多态性的要制。
【参考答案】
【13】静态联编或静态绑定 【14】动态联编或动态绑定
13.以下程序的输出结果是【15】。
#include
void main()
{ int a=0;
a+=(a=8);
cout< 【参考答案】
【15】16
三、改错题
使用VC6打开考生文件夹下的工程kt8_1,此工程包含一个源程序文件kt8_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
f1functionofderive
f2functionofbase
f4functionofbase
源程序文件kt8_1.cpp清单如下:
#include
classbase
{ public:
/**********found**********/
voidf1(){cout<<"f1functionofbase"<
virtualvoidf2(){cout<<"f2functionofbase"<
virtualvoidf3(){cout<<"f3functionofbase"<
voidf4(){cout<<"f4functionofbase"<
/**********found**********/
classderive::publicbase
{ voidf1(){cout<<"f1functionofderive"<
voidf2(intx){cout<<"f2functionofderive"<
voidf4(){cout<<"f4functionofderive"<
voidmain()
{ base*p;
deriveobj2;
/**********found**********/
p=obj2;
p->f1();
p->f2();
p->f4(); }
【参考答案】
(1)将void f1(){ cout<<"f1 function of base"<
改为:virtual void f1(){ cout<<"f1 function of base"<
(2)将class derive::public base
改为:class derive:public base
(3)将p=obj2;
改为:p=&obj2;
【试题解析】
(1)主要考查对虚函数的深刻理解,虚函数是动态联编的基础,也是实现多态性的重要方法,它可以根据不同的情况动态的选择执行哪一个函数。在派生类中实现虚函数应该满足与基类的同名函数完全相同,并且使用关键字virtual修饰,本题中由输出结果中的f1 function of derive可知,必须将基类base的成员函数f1()定义为虚函数;
(2)主要考查对派生类定义格式的掌握,应该使用“:”后面是继承列表,而“::”是作用域符;
(3)主要考查类对象的定义与使用,p是一个指针类型的变量,给它的赋值应该是一个地址,即使用取地址操作符&。
四、简单应用题
已知考生的记录由学号和学习成绩构成,N名考生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的考生记录,通过形参返回主函数(规定只有一个最低分)。已给予出函数的首部,请完成该函数。
注意:部分源程序已存在文件kt8_2.cpp中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
文件kt8_2.cpp的内容如下:
#include
#include
#include
#defineN10
typedefstructss
{charnum[10];
ints;
}STU;
voidfun(STUa[],STU*s)
{
}
voidmain()
{STU
a[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m;
fun(a,&m);
cout<<"*****Theoriginaldate*****"<
cout<<"Thelowest:"<
【参考答案】
fun(STU a[],STU *s)
{int i, min;
min=a[0].s;
for(i=0;i
if(a[i].s
{min=a[i].s;
*s=a[i];}}
【试题解析】
解题思路为:先假设第一个考生的成绩最优,通过循环找到最低成绩,并将最低成绩的考生记录传给指针s,带回主函数。
五、综合应用题
使用VC6打开考生文件夹下的工程kt8_3,此工程包含一个源程序文件kt8_3.cpp,该文件设计了用于输出乘法九九表的类。请认真阅读已有的代码,按要求完成下列操作,将程序补充完整。
(1)定义类Table的私有数据成员x和y,分别用于表示九九表中的两个乘数(x*y),它们都是int型的数据。请在注释“//**1**”之后添加适当的语句;
(2)完成类Table的成员函数print()的定义,该函数以"x*y=z"的格式打印出九九表中的一个乘法算式,请使用格式化输出函数printf实现,在注释“//**2**”之后添加适当的语句;
(3)完成类Table9的成员函数print()的定义,该函数调用基类Table的print()函数,将九九表输出到屏幕,请在注释“//**3**”之后添加适当的语句;
(4)补充主函数,在屏幕上输出九九表,以便测试所定义的类的正确性。请在注释“//**4**”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件kt8_3.cpp清单如下:
#include
#include
classTable
{//**1** 考试大论坛
intz;
public:
voidprint(intx,inty,intz);};
voidTable::print(intx,inty,intz)
{//**2**}
classTable9:publicTable
{public:
voidprint();};
voidTable9::print()
{//**3**
intx,y,z;
for(i=1;i<10;i++)
{for(j=1;j {x=i;
y=j;
z=i*j;
Table::print(y,x,z);}
printf("n");}}
main()
{//**4**
return0;}
【参考答案】
(1)int x;
int y;
(2)printf( "%d*%d=%d ",x,y,z);
if(z<10) printf(" ");
(3)int i,j;
(4)Table9 t_9;
t_9.print();
【试题解析】
主要考查将具体问题抽象为类,将类的定义补充完整,并进行类定义测试的能力。
1.数据结构作为计算机的一门学科,主要研究数据逻辑结构、对各种数据结构进行运算,及( )
A.数据的存储结构
B.计算方法
C.数据映象
D.逻辑存储
【参考答案】 A
2.在计算机中,算法是指( )
A.加工方法
B.解题方案的准确而完整的描述
C.排序方法
D.查询方法
【参考答案】 B
3.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做( )
A.软件投机
B.软件危机
C.软件工程
D.软件产生
【参考答案】 B
4.开发大型软件时,产生困难的根本原因是( )
A.大系统的复杂性
B.人员知识不足
C.客观世界千变万化
D.时间紧、任务重
【参考答案】 A
5.数据库、数据库系统和数据库管理系统之间的关系是( )
A.数据库包括数据库系统和数据库管理系统
B.数据库系统包括数据库和数据库管理系统
C.数据库管理系统包括数据库和数据库系统
D.3者没有明显的包含关系
【参考答案】 B
6.下列叙述中正确的是( )
A.线性表是线性结构
B.栈与队列是非线性结构
C.线性链表是非线性结构
D.二叉树是线性结构
【参考答案】 A
7.已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是( )
A.堆排序
B.直接插入排序
C.快速排序
D.直接选择排序
【参考答案】 B
8.下列不属于结构化分析的常用工具的是( )
A.数据流图
B.数据字典
C.判定树
D.PAD图
【参考答案】 A
9.下列工具中为需求分析常用工具的是( )
A.PAD
B.PFD
C.N-S
D.DFD
【参考答案】 D
10.数据库的故障恢复一般是由( )
A.数据流图完成的
B.数据字典完成的
C.DBA完成的
D.PAD图完成的
【参考答案】 C
11.关于C++与C语言关系描述中错误的是( )
A.C++语言是C语言的超集
B.C++语言对C语言进行了扩充
C.C++语言包含C语言的全部语法特征
D.C++语言与C语言都是面向对象的程序设计语言
【参考答案】 D
12.在C++语言中,不合法的实型数据的是( )
A.0.123
B.123e3
C.2.1e3.5
D.123.0
【参考答案】 C
13.下面有关于for循环的正确描述是( )
A.for循环只能用于循环次数已经确定的情况
B.for循环是先执行循环体语句,后判断表达式
C.在for循环中,不能用break语句跳出循环体
D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
【参考答案】 D
14.假定int类型变量占用两个字节,其有定义int x[10]={0,2,4};,则数组x在内存中所占字节数是( )
A.3
B.6
C.10
D.20
【参考答案】 D
15.以下叙述正确的是( )
A.函数可以嵌套定义但不能嵌套调用
B.函数既可以嵌套调用也可以嵌套定义
C.函数既不可以嵌套定义也不可以嵌套调用
D.函数可以嵌套调用但不可以嵌套定义
【参考答案】 D
16.下面的语句中错误的是( )
A.int a=5;int x[a];
B.const int a=5;int x[a];
C.int n=5;int *p=new int[a];
D.const int n=5;int *p=new int[a];
【参考答案】 A
17.关于二义性的描述错误的是( )
A.一个子类的两个父类中都有某个同名成员,在子类中对该成员访问可能出现二义性
B.解决二义性可以用对成员名的限定法
C.父类和子类中同时出现同名函数,也可能存在二义性
D.一个子类是从两个父类派生出来的,而这两个父类又有一个共同的父类,对该父类成员进行访问时,可能出现二义性
【参考答案】 C
18.函数模板:template
T add(T x,T y) {return x+y;}
下列对add函数的调用不正确的是( )
A.add< >(1,2)
B.add(1,2)
C.add(1.0,2)
D.add(1.0,2.0)
【参考答案】 C
19.this指针是C++实现什么的一种机制?( )
A.抽象
B.封装
C.继承
D.重载
【参考答案】 B
20.下列程序的输出结果是( )
#include
class Myclass{
public:Myclass(int i=0,int j=0)
{
y=j;
}
void show(){cout<<″x=″
25.下列选项,不正确的是( )
A.for(int a=1;a<=10;a++);
B.int a=1;
do
{a++}
while(a<=10)
C.int a=1;
D.for(int a=1;a<=10;a++)a++;
while(a<=10)
{a++}
【参考答案】 B
26.下列程序的输出结果为( )
#include
void main()
{char *a[]={″hello″,″the″,″world″};
char **pa=a;
pa++;
cout<<*pa<
A.hello
B.the C.world
D.hellotheworld
【参考答案】 B
27.下列程序的输出结果是( )
#include
int min(int a,int b)
{if(a
else return b;
return 0;}
void main()
{cout<
A.0
B.1
C.2
D.3
【参考答案】 B
28.对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( )
A.公有类型
B.私有类型
C.保护类型
D.友元类型
【参考答案】 D
29.类的析构函数的作用是( )
A.一般成员函数的初始化
B.类的初始化
C.对象的初始化
D.删除类创建的对象
【参考答案】 D
30.下面对静态数据成员的描述中,正确的是( )
A.静态数据成员可以在类体内进行初始化
B.静态数据成员不可以被类的对象调用
C.静态数据成员不能受private控制符的作用
D.静态数据成员可以直接用类名调用
【参考答案】 D
31.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )
A.派生类的对象可以赋给基类的对象
B.派生类的对象可以初始化基类的引用
C.派生类的对象可以直接访问基类中的成员
D.派生类的对象的地址可以赋给指向基类的指针
【参考答案】 C
32.下列关于虚基类的描述,错误的是( )
A.设置虚基类的目的是为了消除二义性
B.虚基类的构造函数在非虚基类之后调用
C.若同一层中包含多个虚基类,这些基类的构造函数按它们说明的次序调用
D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数
【参考答案】 B
33.下列运算符中,在C++语言中不能重载的是( )
A.*
B.>=
C.::
D./
【参考答案】 C
34.下列程序的运行结果是( )
#include
class A
{ int a;
public:
A() {a=0;}
A(int aa)
{a=aa;
cout<
void main()
{A x,y(2),z(3);
cout<
A.00
B.23
C.34
D.25
【参考答案】 B
35.判断char型变量c是否为小写字母的正确表达式是( )
A.′a′<=c<=′z′
B.(c>+A)&&(c<=z)
C.(′a′>=c)||(′z′<=c)
D.(c>=′a′)&&(c<=′z′)
【参考答案】 D
二、填空题
1.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【1】。
【参考答案】
【1】n/2
2.类是一个支持集成的抽象数据类型,而对象的类的【2】。
【参考答案】
【2】实例
3.当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【3】。
【参考答案】
【3】物理独立性
4.若串s=″MathTypes″,则其子串的数目是【4】。
【参考答案】 http://ks.exam8.com
【4】46
5.关系数据库的关系演算语言是以【5】为基础的DML语言。
【参考答案】
【5】谓词演算
6.程序
#include″inostream.h″
void main()
{int i=10;
int j=5;
cout<
的结果为【6】。
【参考答案】
【6】15
7.语句int *i;i=new int[10];,释放指针i的语句是【7】。
【参考答案】
【7】delete[]I
8.在C++语言中每个类都有一个【8】指针,该指针指向正在调用成员函数的对象。
【参考答案】
【8】this
9.程序的结果为【9】。
#include ″iostream.h″
template
T total(T *data)
{ T s=0;
while( *data)
{s+=*data++;}
return s; }
int main()
{ int x[]={2,4,6,8,0,12,14,16,18};
cout<
return 0;
cout<
【参考答案】
【9】20
10.一个C++语言程序的开发步骤通常包括编辑、【10】、链接、运行和调试。
【参考答案】
【10】编译
11.下面程序的运行结果是【11】和【12】。
#include
#define N 10
#define s(x)x*x
#define f(x)(x*x)
void main()
{ int i1,i2;
i1=1000/s(N);i2=1000/f(N);
cout<
【参考答案】
【11】1000 【12】10
12.【13】是实现C++语言编译时多态性的机制,【14】是实现C++语言运行时多态性的要制。
【参考答案】
【13】静态联编或静态绑定 【14】动态联编或动态绑定
13.以下程序的输出结果是【15】。
#include
void main()
{ int a=0;
a+=(a=8);
cout< 【参考答案】
【15】16
三、改错题
使用VC6打开考生文件夹下的工程kt8_1,此工程包含一个源程序文件kt8_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
f1functionofderive
f2functionofbase
f4functionofbase
源程序文件kt8_1.cpp清单如下:
#include
classbase
{ public:
/**********found**********/
voidf1(){cout<<"f1functionofbase"<
virtualvoidf2(){cout<<"f2functionofbase"<
virtualvoidf3(){cout<<"f3functionofbase"<
voidf4(){cout<<"f4functionofbase"<
/**********found**********/
classderive::publicbase
{ voidf1(){cout<<"f1functionofderive"<
voidf2(intx){cout<<"f2functionofderive"<
voidf4(){cout<<"f4functionofderive"<
voidmain()
{ base*p;
deriveobj2;
/**********found**********/
p=obj2;
p->f1();
p->f2();
p->f4(); }
【参考答案】
(1)将void f1(){ cout<<"f1 function of base"<
改为:virtual void f1(){ cout<<"f1 function of base"<
(2)将class derive::public base
改为:class derive:public base
(3)将p=obj2;
改为:p=&obj2;
【试题解析】
(1)主要考查对虚函数的深刻理解,虚函数是动态联编的基础,也是实现多态性的重要方法,它可以根据不同的情况动态的选择执行哪一个函数。在派生类中实现虚函数应该满足与基类的同名函数完全相同,并且使用关键字virtual修饰,本题中由输出结果中的f1 function of derive可知,必须将基类base的成员函数f1()定义为虚函数;
(2)主要考查对派生类定义格式的掌握,应该使用“:”后面是继承列表,而“::”是作用域符;
(3)主要考查类对象的定义与使用,p是一个指针类型的变量,给它的赋值应该是一个地址,即使用取地址操作符&。
四、简单应用题
已知考生的记录由学号和学习成绩构成,N名考生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的考生记录,通过形参返回主函数(规定只有一个最低分)。已给予出函数的首部,请完成该函数。
注意:部分源程序已存在文件kt8_2.cpp中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
文件kt8_2.cpp的内容如下:
#include
#include
#include
#defineN10
typedefstructss
{charnum[10];
ints;
}STU;
voidfun(STUa[],STU*s)
{
}
voidmain()
{STU
a[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m;
fun(a,&m);
cout<<"*****Theoriginaldate*****"<
cout<<"Thelowest:"<
【参考答案】
fun(STU a[],STU *s)
{int i, min;
min=a[0].s;
for(i=0;i
if(a[i].s
{min=a[i].s;
*s=a[i];}}
【试题解析】
解题思路为:先假设第一个考生的成绩最优,通过循环找到最低成绩,并将最低成绩的考生记录传给指针s,带回主函数。
五、综合应用题
使用VC6打开考生文件夹下的工程kt8_3,此工程包含一个源程序文件kt8_3.cpp,该文件设计了用于输出乘法九九表的类。请认真阅读已有的代码,按要求完成下列操作,将程序补充完整。
(1)定义类Table的私有数据成员x和y,分别用于表示九九表中的两个乘数(x*y),它们都是int型的数据。请在注释“//**1**”之后添加适当的语句;
(2)完成类Table的成员函数print()的定义,该函数以"x*y=z"的格式打印出九九表中的一个乘法算式,请使用格式化输出函数printf实现,在注释“//**2**”之后添加适当的语句;
(3)完成类Table9的成员函数print()的定义,该函数调用基类Table的print()函数,将九九表输出到屏幕,请在注释“//**3**”之后添加适当的语句;
(4)补充主函数,在屏幕上输出九九表,以便测试所定义的类的正确性。请在注释“//**4**”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件kt8_3.cpp清单如下:
#include
#include
classTable
{//**1** 考试大论坛
intz;
public:
voidprint(intx,inty,intz);};
voidTable::print(intx,inty,intz)
{//**2**}
classTable9:publicTable
{public:
voidprint();};
voidTable9::print()
{//**3**
intx,y,z;
for(i=1;i<10;i++)
{for(j=1;j {x=i;
y=j;
z=i*j;
Table::print(y,x,z);}
printf("n");}}
main()
{//**4**
return0;}
【参考答案】
(1)int x;
int y;
(2)printf( "%d*%d=%d ",x,y,z);
if(z<10) printf(" ");
(3)int i,j;
(4)Table9 t_9;
t_9.print();
【试题解析】
主要考查将具体问题抽象为类,将类的定义补充完整,并进行类定义测试的能力。