131-9488-3786

您现在的位置是: 首页 > 真题资料 > 模拟试题 > 二级 > 2021年9月计算机等级考试二级C语言模拟试题及其答案(1) > 正文

2021年9月计算机等级考试二级C语言模拟试题及其答案(1)

整理编辑:计算机等级考试网  发布时间:2019-07-26 08:48:00  阅读量:

程序改错题


使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为


TC1


TC2


注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。


试题程序:


#include


#includestructTCO


{


//********error********


virtualvoidfun();


};


classTCl:publicTCO


{


voidfun()


{


cout<<"TCl"<}


};


classTC2:publicTCO


{


voidfun()


{


cout<<"TC2"<}


};


voidmain()


{


TCO"P;


TClobj1;


TC2obj2;


//********error********


p=*obj1;


p->fun();


//********error********


p=*obj2;


p->fun();


return;


}


参考答案:


(1)应改为“virtualvoidfun()=0;”。


(2)应改为“p=&obj1;”。


(3)应改为“p=&obj2;”。


【解析】如果在基类中不使用这个虚函数,其返回值也是没有意义的,它应该被定义为纯虚函数。所以虚函数fun应该是纯虚函数,也就是声明虚函数时初始化为0的函数。即第2处的“virtualvoidfun()=0;”。第2处的P为指针变量,将对象obj1赋值给P,实际上蹙P指向对象obj1的地址,所以将“p=*obj1;”修改为“P=&obj1;”。第3处的“P=*obj2;”修改为“p=&obj2;”。


简单应用题


使用VC++6.0打开考生交件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intN[4])的功能是用4个数字,组成互不相同且无重复数字的3位数,并将满足所有条件的数字输出到屏幕,


并且每输出一个3位数就换一行。


程序分析:可填在百位、十位、个位的数字都是1、2、3、0。组成所有的排列后再去掉不满足条件的排列。如果判定第一个数字是0,则也去掉。


试题程序:


#include


voidfun(intN[4])


{


}


intmain()


intN[4]={1,2,3,0};


fun(N):


return0;


}


参考答案:


inti,j,k;


for(i=0;i<4;i++)//百位循环


{


for(j=0;j<4;j++)//十位循环


for(k=0;k<4;k++)//个位循环


{


if(i!=j&&j!=k&&k!=i&&N[i]!=0)//


当三位数不同,并且百位不为0


{


cout<}


}


}


【解析】本题利用3层循环,对3位数字是否相同进行判断。如果3位数不同,并且百位不为0,那么依次输出这3 位数,即由3位数组成的数字。


综合应用题


使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。


(1)基类People完成打印功能,定义其中的打印函数为


虚函数,请在注释1后添加适当的语句。


(2)类Boy继承于People,在构造函数中设置性别为1,


请在注释2后添加适当的语句。


(3)类Girl继承于People,在构造函数中设置性别为0,请在注释3后添加适当的语句。


(4)实现函数fun,用于传递不同的类型,打印出性别,请在注释4后添加适当的语句。


输出的内容如下:


Sex=Boy


Sex=Girl


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


试题程序:


#include


classPeople


{


public:


//********1********


voidprint(){}


intsex;


};


classBoy:publicPeople


{


publiC:


Boy()


{


//********2********}


voidprint()


{


cout<<"Boy"<}


};


classGirl:publicPeople


{


public:


Girl()


{


//********3********}


voidprint()


{


cout<<"Girl"<}


};


//********4********{


cout<<"Sex=";


p.print();


}


intmain()


{


Boym:


fun(m);


Girln:


fun(n);


return0;


}


参考答案:


(1)将“voidprint(){};”补充完整为“virtualvoidprint(){};”。


(2)应添加“sex=1;”。


(3)应添加“sex=0;”。


(4)应添加“voidfun(People&p)”。


【解析】第1处要求“基类People完成打印功能,定义其中的打印函数为虚函数”。虚函数是函数的一种,定义虚函数,在函数名前声明virtual就可以了,所以将第1处的“voidprint(){}”语句修改为“virtualvoidprint(){}”。第2处要求“类Boy继承于People,在构造函数中设置性别为l”。基类People中变量sex用来存放性别,Boy继承People,所以Boy中性别的变量可以使用基类中的sex变量,设置性别为1,即“sex=1;”。第3处要求“类Girl继承于People,在构造函数中设置性别为0”。在第3处添加语句“sex=0;”。第4处要求“实现函数fun,用于传递不同的类型,打印出性别”。根据“P.print();”语句知道,fun函数的形参为指针P,由于它调用了基类People中的成员函数print,所以P的基类为People,即添加函数fun的定义为“voidfun(People&p)”。

程序改错题

使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为

TC1

TC2

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。

试题程序:

#include

#includestructTCO

{

//********error********

virtualvoidfun();

};

classTCl:publicTCO

{

voidfun()

{

cout<<"TCl"<}

};

classTC2:publicTCO

{

voidfun()

{

cout<<"TC2"<}

};

voidmain()

{

TCO"P;

TClobj1;

TC2obj2;

//********error********

p=*obj1;

p->fun();

//********error********

p=*obj2;

p->fun();

return;

}

参考答案:

(1)应改为“virtualvoidfun()=0;”。

(2)应改为“p=&obj1;”。

(3)应改为“p=&obj2;”。

【解析】如果在基类中不使用这个虚函数,其返回值也是没有意义的,它应该被定义为纯虚函数。所以虚函数fun应该是纯虚函数,也就是声明虚函数时初始化为0的函数。即第2处的“virtualvoidfun()=0;”。第2处的P为指针变量,将对象obj1赋值给P,实际上蹙P指向对象obj1的地址,所以将“p=*obj1;”修改为“P=&obj1;”。第3处的“P=*obj2;”修改为“p=&obj2;”。

简单应用题

使用VC++6.0打开考生交件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intN[4])的功能是用4个数字,组成互不相同且无重复数字的3位数,并将满足所有条件的数字输出到屏幕,

并且每输出一个3位数就换一行。

程序分析:可填在百位、十位、个位的数字都是1、2、3、0。组成所有的排列后再去掉不满足条件的排列。如果判定第一个数字是0,则也去掉。

试题程序:

#include

voidfun(intN[4])

{

}

intmain()

intN[4]={1,2,3,0};

fun(N):

return0;

}

参考答案:

inti,j,k;

for(i=0;i<4;i++)//百位循环

{

for(j=0;j<4;j++)//十位循环

for(k=0;k<4;k++)//个位循环

{

if(i!=j&&j!=k&&k!=i&&N[i]!=0)//

当三位数不同,并且百位不为0

{

cout<}

}

}

【解析】本题利用3层循环,对3位数字是否相同进行判断。如果3位数不同,并且百位不为0,那么依次输出这3 位数,即由3位数组成的数字。

综合应用题

使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。

(1)基类People完成打印功能,定义其中的打印函数为

虚函数,请在注释1后添加适当的语句。

(2)类Boy继承于People,在构造函数中设置性别为1,

请在注释2后添加适当的语句。

(3)类Girl继承于People,在构造函数中设置性别为0,请在注释3后添加适当的语句。

(4)实现函数fun,用于传递不同的类型,打印出性别,请在注释4后添加适当的语句。

输出的内容如下:

Sex=Boy

Sex=Girl

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

试题程序:

#include

classPeople

{

public:

//********1********

voidprint(){}

intsex;

};

classBoy:publicPeople

{

publiC:

Boy()

{

//********2********}

voidprint()

{

cout<<"Boy"<}

};

classGirl:publicPeople

{

public:

Girl()

{

//********3********}

voidprint()

{

cout<<"Girl"<}

};

//********4********{

cout<<"Sex=";

p.print();

}

intmain()

{

Boym:

fun(m);

Girln:

fun(n);

return0;

}

参考答案:

(1)将“voidprint(){};”补充完整为“virtualvoidprint(){};”。

(2)应添加“sex=1;”。

(3)应添加“sex=0;”。

(4)应添加“voidfun(People&p)”。

【解析】第1处要求“基类People完成打印功能,定义其中的打印函数为虚函数”。虚函数是函数的一种,定义虚函数,在函数名前声明virtual就可以了,所以将第1处的“voidprint(){}”语句修改为“virtualvoidprint(){}”。第2处要求“类Boy继承于People,在构造函数中设置性别为l”。基类People中变量sex用来存放性别,Boy继承People,所以Boy中性别的变量可以使用基类中的sex变量,设置性别为1,即“sex=1;”。第3处要求“类Girl继承于People,在构造函数中设置性别为0”。在第3处添加语句“sex=0;”。第4处要求“实现函数fun,用于传递不同的类型,打印出性别”。根据“P.print();”语句知道,fun函数的形参为指针P,由于它调用了基类People中的成员函数print,所以P的基类为People,即添加函数fun的定义为“voidfun(People&p)”。




本文标签:计算机等级考试二级2021年9月计算机等级考试二级C语言模拟试题及其答案(1)

转载请注明:文章转载自(http://www.jsjdj.net

本文地址:http://www.jsjdj.net/erji_mnst/2126.html

计算机等级微信刷题助手
扫码进入微信刷题助手

解锁即可开始刷题
并加入考生交流群

计算机等级微信公众号
扫码关注微信公众号

第一时间获取
计算机等级考试考试资讯

《计算机等级考试网》免责声明:

1、因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

2、本网信息来源为其他媒体的稿件转载,免费转载出于非商业性学习目的,版权归原作者所有,如有内容与版权问题等请与本站联系。联系邮箱:812379481@qq.com。