网站首页 语言 会计 电脑 医学 资格证 职场 文艺体育 范文

2017计算机二级C++备考习题及答案

栏目: 计算机二级 / 发布于: / 人气:1.79W

计算机等级考试要取得好成绩平时一定要多加练习,提高做题技巧和速度。下面是小编为大家整理的2017计算机二级C++备考习题及答案,希望对大家有帮助!

2017计算机二级C++备考习题及答案

  一、综合应用题

使用VC6打开考生文件夹下的工程kt7_3,此工程包含一个源程序文件kt7_,其中含有一个类Circle的定义,但该类的定义并不完整。请按要求完成下列操作,将类Circle的定义补充完整。

(1)为类Circle增加一个构造函数,该函数有一个参数,并在构造时将该参数值赋给成员radius。将该函数实现为一个非内联函数,并且使用参数列表的方式将类成员赋值。请在注释“//**1**”之后添加适当的语句。

(2)为类Circle增加一个成员函数print(  ),使得可以输出有关圆的信息,比如下列程序

Circlec;

adius(5);

t(  );

将输出:Thecirclehasradiusof5!

请在注释“//**2**”之后添加适当的语句。

(3)完成友元函数voidCompareR(Circle*c1,Circle*c2)的定义,在屏幕中输出c1与c2比较radius大小结果,要求使用if-else结构完成。请在注释“//**3**”之后添加适当的语句。

输出结果如下:

Thecirclehasradusof5!

Thecirclehasradiusof10!

c1

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件kt7_清单如下:

#include

classCircle{

public:

Circle(  ):radius(5){}

//**1**

voidSetRadius(intr){radius=r;}

intGetRadius(  ){returnradius;}

//**2**

friendvoidCompareR(Circle*c1,Circle*c2);

private:

intradius;};

voidCompareR(Circle*c1,Circle*c2)

{//**3**

cout<<"c1>c2"<

else

if((c1->GetRadius(  ))==(c2->GetRadius(  )))

cout<<"c1=c2"<

else

if((c1->GetRadius(  ))<(c2->GetRadius(  )))

cout<<"c1

voidmain(  )

{Circlec1; 来源:考试大

adius(5);

t(  );

Circlec2(10);

t(  );

CompareR(&c1,&c2);}

【参考答案】

(1)Circle(intrad):radius(rad){}

(2)voidPrint(  ){cout<<"Thecirclehasradiusof"<

(3)if((c1->GetRadius(  ))>(c2->GetRadius(  )))

【试题解析】

本题考查成员函数的定义与实现,友元函数,if分支语句等知识点。友元函数的类体外的定义与一般函数一样,其中if-else的`使用,else总是与其最近的那个if配对使用的,书写时最好使用缩进格式,将配对的if-else对齐,以免出错。

  二、简单应用题

已知考生的记录由学号和学习成绩构成,N名考生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的考生记录,通过形参返回主函数(规定只有一个最低分)。已给予出函数的首部,请完成该函数。

注意:部分源程序已存在文件kt8_中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

文件kt8_的内容如下:

#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,带回主函数。