国家计算机二级C++80真题含答案与解析交互.docx
- 文档编号:9134095
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:29
- 大小:30.88KB
国家计算机二级C++80真题含答案与解析交互.docx
《国家计算机二级C++80真题含答案与解析交互.docx》由会员分享,可在线阅读,更多相关《国家计算机二级C++80真题含答案与解析交互.docx(29页珍藏版)》请在冰豆网上搜索。
国家计算机二级C++80真题含答案与解析交互
国家计算机二级(C++)80
(总分460,做题时间120分钟)
选择题(每小题2分,共70分)下列各题四个选项中,有一个是正确的,请选择正确答案。
1.
以下程序的输出结果是()。
#include<iostream.h>
voidreverse(inta[],intn)
{inti,t;
for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
voidmain( )
{intb[10]:
={1,2,3,4,5,6,7,8,9,10};inti,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
cout<<S;
}
A (x=y=6,x+y,X+1)
B (x=y=6,x+y,y+1)
C (x=6,x+1,y=6,x+y)
D (y=6,y+1,x+y,x+1)
分值:
2
答案:
C
在VisualBasic中,允许出现快捷菜单,对用户来说,提供了很大的方便,一般来说,菜单都在窗口的顶部,有时,用户需要执行菜单中的某一命令,就得把鼠标移动到窗口顶部,然后打开菜单选择命令,这对用户来说,会觉得麻烦。
而快捷菜单并不需要到窗口的顶部来打开,只要单击鼠标右键,就会弹出菜单。
设计快捷菜单仍然可以用VisualBasic中提供的菜单编辑器,只要把某个菜单设置成隐藏就可以了,实际上,不管是在窗口顶部菜单条上显示的菜单还是隐藏的菜单,都可以用PopupMenu方法把它们作为快捷菜单在运行时显示出来。
PopupMenu方法的使用形式如下:
[对象].PopupMenu菜单名,标志,x,y
其中,x,y是提供菜单显示的位置;标志:
指定快捷菜单的行为。
当标志为0时,快捷菜单中的项只能对鼠标左键起反应;当标志为2时,快捷菜单中的项对鼠标右键和左键都反应;标志为2时,PopupMenu方法只能用在MouseDown事件过程中。
2.
下列程序的运行结果为()。
#include<iostream.h>
inti=0;
classA{
public:
A(){i++;}
};
voidmain( )
{
Aa,b[3],*c;
C=b;
cout<<i<<endl;
}
A 2
B 3
C 4
D 5
分值:
2
答案:
C
外部变量i实际上记录的是调用构造函数的次数。
3.
有如下的运算符重载函数定义:
doubleoperator+(inti,intk){returndouble(i+1);}但定义有错误,对这个错误是准确的描述是【】
A +只能作为成员函数重载,而这里的+是作为非成员函数重载的
B 两个int型参数的和也应该是int型,而这里将+的返回类型声明为double
C 没有将运算符重载函数声明为某个类的友元
D C++已经提供了求两个int型数据之和的运算符+,不能再定义同样的运算符
分值:
2
答案:
A
这道题对"+"运算符的重载,违反了"重载的运算符应该体现为原运算符的功能在新的数据类型上的延伸,它的使用应当使程序中算法的表达显得更流畅、自然,使阅读程序的人在不借助于其他说明资料的情况下就能够正确理解。
"这一原则。
4.
有如下程序
#include
usingnamespacestd;
inti=1;
classFun{
public;
staticinti;
intvalue(){returni-1}
intvalue()const{returni+1;}
};
intFun;;i=2;
intmain(){
inti=3;
FunFun1
constFunfun2;
return0;
}
若程序的输出结果是:
123
则程序中下划线处遗漏的语句是______。
A cout< : i< B cout< : i< C cout< : i; D cout< : i< 分值: 2 答案: 未知 5. 以下叙述中正确的是()。 A PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,- XAsSingle,YAsSingle) IfButton=2ThenPopupMenuBs,2 EndSub B PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,- XAsSingle,YAsSingle) PopupMenuBs EndSub C PrivateSubFOrm_MouseDown(ButtonAsInteger,ShiftAsInteger,- XAsSingle,YAsSingle) PopupMenuBs,0 EndSub D PrivateSubForm_MouseDown(ButtonAsInteger,ShinAsInteger,- XAsSingle,YAsSingle) If(Button=vbLeftButton)Or(Button=vbRightButton)ThenPopupMenuBs EndSub 分值: 2 答案: A 在程序的多级调用中,如果在某个子程序的返回语句中加入了选项TOMASTER,那么在执行程序嵌套时,它们的返回次序将被改变。 本题在子程序PROG3.prg中加入了选项TOMASTER,那它们的返回次序将是由子程序PROG3.prg直接返回到主程序。 6. 在结构化程序设计中,模块划分的原则是 A 各模块应包括尽量多的功能 B 各模块的规模应尽量大 C 各模块之间的联系应尽量紧密 D 模块内具有高内聚度、模块间具有低耦合度 分值: 2 答案: D 模块设计的原则包括: ①提高模块独立性即模块要高内聚低耦合。 ②规模适中。 ③深度、宽度、扇出和扇人要适中。 ④应尽量减少模块的接口和界面的复杂性。 ⑤设计成单人口、单出口的模块。 ⑥设计成可预测的模块。 7. 下面这个程序的结果是()。 #include<iostream.h> classA { private: inta; public: voidseta( );intgeta( );}; voidA: : seta( ) {a=1;} intA: : geta( ) {returna;} classB { private: inta; publiC: voidseta( );intgeta( );}; voidB: : seta( ) {a=2;} intB: : geta( ) {returna;} classC: publicA,publicB { private: intb; public: voiddisplay( );}; voidC: : display( ) { int b: geta( ); cout<<b;} voidmain( ) { Cc; c.seta( ); c.display( );} A 1 B 2 C 随机输出1或2 D 程序有错 分值: 2 答案: D 在类A中有geta()函数,在类B中也有geta()函数,类C继承了类A和类B,这样就产生了二义性,所以程序会出错。 8. 设inta=10,b=11,c=12;,表达式(a+b)<c&&b==c的值是()。 A 类A的成员即类B的成员 B 类B的成员即类A的成员 C 类A的成员函数不得访问类B的成员 D 类B不一定是类A的友元 分值: 2 答案: D 关键字this表示当前对象。 与关键宇this相对应的关键字super,它用来引用当前对象的父类。 9. 下列符号中能够作为C++标识符的是 A const B 2a C -shape D -count 分值: 2 答案: C 作为标识符必须满足以下规则: 所有标识符必须由一个字母(a~z,A~Z)或下划线“_”开头;标识符的其它部分可以用字母、下划线或数字(0~9)组成;大小写字母表示不同意义,即代表不同的标识符;标识符只有前32个字符有效;标识符不能使用关键字。 count是设备保留字不能作为标识符。 10. 设有定义inta=1;floatf=1.2;charc=''a'';,则下列表示错误的是()。 A ++a; B f--; C c++; D 8++; 分值: 2 答案: D ++,--运算符不能用于常量表达式。 11. 关于C++语言与C语言关系描述中错误的是()。 A C++语言是C语言的超集 B C++语言对C语言进行了扩充 C C++语言包含C语言的全部语法特征 D C++语言与C语言都是面向对象的程序设计语言 分值: 2 答案: D C语言是一种面向过程的程序设计语言,而C++语言是一种面向对象的设计语言,C++语言是C语言的超集,它包含了C语言的所有语言特性,并进行了扩充。 12. 算法的有穷性是指 A 算法程序的运行时间是有限的 B 算法程序所处理的数据量是有限的 C 算法程序的长度是有限的 D 算法只能被有限的用户使用 分值: 2 答案: A 算法具有5个特性: ①有穷性: 一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运行时间是有限的;②确定性: 算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。 ③可行性: 一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。 ④输入: 一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。 ⑤输出: 一个算法有一个或多个输出。 13. 关于友元,下列说法错误的是【】 A 如果类A是类B的友元,那么类B也是类A的友元 B 如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员 C 友元关系不能被继承 D 如果类A是类B的友元,那么类A的所有成员函数都是类B的友元函数 分值: 2 答案: A 本题考核友元类和友元函数。 友元关系是单向的,并且只在两个类之间有效。 即使类X是类Y的友元,类Y是否是类X的友元也要看类X中是否有相应的声明。 即友元关系不具有交换性,所以A选项的说法是错误的。 类的友元函数可以直接访问该类的所有成员;类A是类B的友元类,那么类A的所有成员函数都是类B的友元函数。 14. 下列选项中不属于结构化程序设计方法的是______。 A 自顶向下 B 逐步求精 C 模块化 D 可复用 分值: 2 答案: D 20世纪70年代以来,提出了许多软件设计方法,主要有①逐步求精: 对复杂的问题,应设计一些子目标作过渡,逐步细化;②自顶向下: 程序设计时应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。 不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化;③模块化: 一个复杂问题,肯定是由若干稍简单的问题构成。 模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块,而可复用是面向对象程序设计的一个优点。 15. 若有语句char*line[5];,以下叙述中正确的是______。 A 定义line是一个数组,每个数组元素是一个基类型为char的指针变量 B 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组 C 定义line是一个指针数组,语句中的*号称为间址运算符 D 定义line是一个指向字符型函数的指针 分值: 2 答案: A 由于运算符[]优先级比*高,所以“char*line[5];”相当于“char*(line[5]);”,表示line是一个数组,每个数组元素是一个基类型为char的指针变量。 16. 下面关于数组的描述错误的是()。 A 报表页眉 B 页面页眉 C 组页眉 D 以上说法都不对 分值: 2 答案: B 将标题移动到页面页眉中,则标题在每一页上都显示。 如果将标题移动到报表页眉中,则打印时只在第一页的开始位置出现。 17. 每个C++程序中都必须有且仅有一个()。 A 类 B 预处理命令 C 主函数 D 语句 分值: 2 答案: C 每个c++程序中都要有且仅有一个主函数,该函数是程序的入口,而语句、预处理命令和函数及类在程序中都可以有多个。 18. 软件是指 A 程序 B 程序和文档 C 算法加数据结构 D 程序、数据与相关文档的完整集合 分值: 2 答案: D 软件是程序、效据和相关文档的完整集合。 19. 下面对静态数据成员的描述中,正确的是()。 A 静态数据成员可以在类体内进行初始化 B 静态数据成员不可以被类的对象调用 C 静态数据成员不能受private控制符的作用 D 静态数据成员可以直接用类名调用 分值: 2 答案: D 静态数据成员必须在类体外初始化,它是类的所有对象的共有成员,需要使用类名调用,静态数据成员的初始化与权限控制无关。 20. 有以下程序: #include structSTU {charname[10]; intnum; }; voidf(char*name,intnum) {structSTUs[2]={{"SunDan",20044},{"Penghua",20045}}; num=s[0].num; strcpy(name,s[0].name); } main() {structSTUs[2]={{"YangSan",20041},{"LiSiGao",20042}},*p; p=&s[1];f(p->name,p->num); printf("%s%d\n",p->name,p->num); } 程序运行后的输出结果是______。 A SunDan20042 B SunDan20044 C LiSiGuo20042 D YangSan20041 分值: 2 答案: A 本题主函数中定义了结构体类型的指针变量p,并使其指向了结构体类型的数组s[1],并通过调用函数f改变了指针变量p所指向的结构体中成员变量name的值,但并未改变其num的值。 这是因为函数f中的形参name是一个字符型指针变量,它指向了主函数中指针变量p所指向的结构体的成员变量name,所以对函数f中的形参*name的改变也就是对主函数中p->name的改变,而函数f中对形参num的改变并不会影响主函数中p->num的值,因为此时传递给num的是一个值,而不是地址。 21. 数据的存储结构是指______。 A 存储在外存中的数据 B 数据所占的存储空间量 C 数据在计算机中的顺序存储方式 D 数据的逻辑结构在计算机中的表示 分值: 2 答案: D 数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。 22. 不能重载的运算符是()。 A 一般成员函数的初始化 B 类的初始化 C 对象的初始化 D 删除类创建的对象 分值: 2 答案: D 此题主要考查方法重载,方法的重载是指多个方法可以享有相同的名字,但参数的数量或类型必须不相同(采用不同的形式参数列表)。 选项B)不符合方法重载的要求。 23. 下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,在划线处应填入的是()。 #include<iostream.h> voidmain( ) { inti=0,j,k; do{i++;k=316-13*i;}while(_____); j=k/11; cout<<"316=13*"<<i<<"+11*"<<j; } A k/1l B k%11 C k/11==0 D k%11==0 分值: 2 答案: B do-while语句的一般形式是: do { 语句 }while(表达式); 特点是: “直到型”循环结构。 先执行一次“语句”,判“表达式”,当“表达式”为非0,再执行“语句”,直到“表达式”的值为0时停止执行语句。 在一般情况下,用while和do-while语句解决同一问题时,若二者的循环体部分是一样的,它们的结果也一样。 但当while后面的“表达式”一开始就为“假”时,两种循环的结果不同。 这是因为此时while循环的循环不被执行,而do-while循环的循环体被执行一次。 本题的关键是两个加数分别能被13和11整除,在i=0时,直接将316赋值给k,当k%11的值为0时,则不必执行循环,将执行j=k/11语句,输出结果,所以该表达式合理的条件是k5%11。 24. 关于关键字class和typename,下列表述中正确的是______。 A 程序中的typename都可以替换为class B 程序中的class都可以替换为typename C 在模板形参表中只能用typename来声明参数的类型 D 在模板形参表中只能用class或typename来声明参数的类型 分值: 2 答案: 未知 25. 下列运算符不能重载为友元函数的是【】 A =()[]-> B +-++-- C ><>=<= D +=-=*=/= 分值: 2 答案: A 一般运算符重载可以采用成员函数方式或友元方式。 但成员运算符(.),指向成员的指针->,赋值运算符,()和[]是不能够重载为友元函数的运算符。 对双目运算符,友元函数有两个参数;对单目运算符,友元函数有一个参数。 26. 有以下程序: #definef(x)(x*x) main() {inti1,i2; i1=f(8)/f(4);i2=f(4+4)/f(2+2); printf("%d,%d\n",i1,i2); } 程序运行后的输出结果是______。 A 64,28 B 4,4 C 4,3 D 64,64 分值: 2 答案: C 对带参数的宏的展开只是将语句中宏名后面括号内的实参字符串代替#define命令行中的形参。 本题中“i1=f(8)/f(4)”用“#definef(x)(x*x)”代替得i1=(8*8)/(4*4),结果为4;“i2=f(4+4)/f(2+2)”用“#definef(x)(x*x)”代替得i2=(4+4*4+4)/(2+2*2+2),求得结果为3。 故本题输出的值为4,3。 27. 设变量a是int型,f是double型,i是float型,则表达式10+''a''+i*f值的数据类型是()。 A int B float C double D 不确定 分值: 2 答案: C 根据混合运算规则,如果有一个数据是double型,则其他数据类型先转化为double型,运算的结果最终也是double型。 为保证精度的不丢失,表达式的数据类型是变量和常量中精确度最高的变量类型。 28. 执行语句for(i=1;i++<4;);,后变量i的值是 A SELECT姓名FROM车间; WHERE工资>3000AND车间="W1"OR车间="W2" B SELECT姓名FROM车间; WHERE工资>3000AND(车间="W1"OR车间="W2") C SELECT姓名FROM车间; WHERE工资>3000OR车间="W1"OR车间="W2" D SELECT姓名FROM车间; WHERE工资>3000AND(车间="W1"OR车间="W2") 分值: 2 答案: D List组件的该构造方法的第一个参数的意思是它的初始显式行数,如果该值为0则显示4行,第二个参数是指定该组件是否可以多选,如果值为true则是可以多选,false是不可多选,如果不指定则缺省是不能多选。 29. this指针是C++语言实现什么的一种机制? A 抽象 B 封装 C 继承 D 重载 分值: 2 答案: B this指针是C++语言实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起,在外部看来,每一个对象都拥有自己的函数成员。 30. 对于模板定义关键字class和typename说法不正确的是()。 A 每次调用此过程,该过程中的局部变量都会被重新初始化 B 在本过程中使用到的,在其他过程中定义的变量也为Statci型 C 每次调用此过程时,该过程中的局部变量的值保持在上一次调用后的值 D 定义了该过程中定义的局部变量为"自动"变量 分值: 2 答案: C Style属性用来决定控件类型及列表框部分行为,其值取0,1,2。 0-DropdownComboBox: 此时组合框称为“下拉式组合框”,看上去像一个下拉列表框,但是可以输入文本或从下拉列表框中选择表项。 1-SimpleComboBox: 此时组合框称为“简单组合框”,它由一个文本编辑区和一个标准列表框组成。 2-DropdownListBox: 此时组合框称为“下拉式列表框”,它的外观和下拉式组合框一样,右端也有一个箭头,可供“拉下”或“收起”列表框,可以从下拉列表框选择表项,也可以键入表项的文本作选择,但不接收其他文本输入。 31. 下列程序的运行结果是()。 #include<iostream.h> voidfun(int*a,iht*B) {int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 国家 计算机 二级 C+ 80 真题含 答案 解析 交互