admin 管理员组文章数量: 1184232
2024年5月21日发(作者:restapi 取数)
2021年福建省莆田市全国计算机等级考试
C++语言程序设计真题(含答案)
学校:________ 班级:________ 姓名:________ 考号:________
一、1.选择题(10题)
1. 数据库概念设计中由分散到集中的设计方法是
A.视图设计 B.视图集成设计 C.集中式模式设计 D.分散式模式设计
2. 常用的关系运算是关系代数和( )。
A.集合代数 B.逻辑演算 C.关系演算 D.字段
3. 若表R在排序前已按键值递增顺序排列,则 ______ 算法的比较次
数最少。
A.直接插入排序 B.快速排序 C.归并排序 D.选择排序
4.在c++语言中,数据封装要解决的问题是( )。
A.数据的规范化 B.便于数据转换 C.避免数据丢失 D.防止不同模块之
间数据的非法访问
5. 下列对变量的引用中,错误的是( )。
a;int &p=a;
a;char &p=a;
a;int &p;p=a;
a;float &p=a;
6. 若有以下程序: #include<iostream> using namespace std; int fun()
{ static int i=0; int s=1; s+=i; i++; return s; } int main() { int i,a=0; for(i=0;i
<5;i++) a+=fun(); cout<<a<<endl; return 0; } 程序运行后,输出的结
果是( )。
A.20 B.24 C.26 D.15
7. 有如下程序 #include<iostream.h> void main( ) { char
ch[2][5]={"6937","8254"},*p[2]; int i,j,s=0; for(i=0;i<2;i++)p[i]=ch[i];
for(i=0;i<2;i++) for(j=0;p[i][j]>'0';j+=2) s=10*s+p[i][j]-'0';
A.69825 B.63825 C.6385 D.693825
8. 以下程序输出结果是 ______。 #include<iostream.h> void fun(int x,
int y,int z){z=x+y;} void main() { int a=10; fun (2,2,a); cout<<a; }
A.0 B.4 C.10 D.无定值
9. 下列叙述中,正确的是( )。
A.线性表是线性结构 B.栈与队列是非线性结构 C.线性链表是非线性
结构 D.二叉树是是线性结构
10. 有如下程序: #include<iostream> using namespace std; Class
TestClass {int a; public: TestClass(int x){a=x;} void show(){cout<<
a;}}; class TestClass1:public TestClass {int b; public: TestClass1(int
i):TestClass(i+1),b(i){} voi
A.5 B.1 C.0 D.2
二、单选题(13题)
11. 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定
的图符构成。下列图符名标识的图符不属于数据流图合法图符的是
( )。
A.控制流 B.加工 C.数据存储 D.源和潭
12.对于循环队列,下列叙述中正确的是()。
A.队头指针是固定不变的
B.队头指针一定大于队尾指针
C.队头指针一定小于队尾指针
D.队头指针可以大于队尾指针,也可以小于队尾指针
13.对于一个类定义,下列叙述中错误的是
A.如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数。
B.如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函
数。
C.如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷
贝构造函数。
D.如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造
函数。
14.语句ofstream f("SALARY.DAT",ios_base::app);的功能是建立
流对象f,并试图打开文件与f关联,而且
A.若文件存在,将其置为空文件;若文件不存在,打开失败
B.若文件存在,将文件指针定位于文件尾:若文件不存在,建立一个新
文件
C.若文件存在,将文件指针定位于文件首;若文件不存在,打开失败
D.若文件存在,打开失败;若文件不存在,建立一个新文件
15.下面关于类和对象的描述中,错误的是( )。
A.类就是C语言中的结构体类型,对象就是C语言中的结构体变量
B.类和对象之间的关系是抽象和具体的关系
C.对象是类的实例,一个对象必须属于一个已知的类
D.类是具有共同行为的若干对象的统一描述体
16.以下关键字不能用来声明类的访问权限的是( )。
C..proteCted e
17.若有以下定义: inta[]={1,2,3,4,5,6,7}; charc1=b,c2=2;
则数值不为2的表达式是( )。
A.a[1] 1 C.a[3-c2] D.c2-0
18.
19.
20.在一个派生类的成员函数中,试图调用其基类的成员函数“void
f();”,但无法通过编译。这说明( )。
A.f()是基类的私有成员 B.f()是基类的保护成员 C.派生类的继承方式
为私有 D.派生类的继承方式为保护
21.静态成员函数没有()。
A.返回值 指针 C.指针参数 D.返回类型
22.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。
下面属于应用软件的是_________。
A.编译程序 B.操作系统 C.教务管理系统 D.汇编程序
23.某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度
为(假设根结点在第1层)( )。
A.3 B.4 C.6 D.7
三、2.填空题(12题)
24. 假设a、b均是整型变量,则表达式a=2,b=5,a++,b++,a+b值为
【 】。
25. 多态性分为两类:编译时的多态性和【 】的多态性。
26. 程序
#include"iostream.h"
void main( )
{
int i =10;
int j=5;
cout<<j+i++<<endl;
}
的结果为【 】。
27. 在C++中,类的成员有3种访问权限,它们分别是公有、【 】和私
有。
28. 数据的逻辑结构有线性结构和【 】两大类。
29. 某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树
中共有______个结点
30. 有如下类定义,请将Sample类的复制构造函数补充完整。
class Sample{
public:
Sample( ){ }
~Sample( ){if(P)delete P;)
Sample(const Sample&s){______}
void SetData(int datA) {P=new int(datA) ;}
private:
int*P:
};
31. 为解决在多重继承环境中因公共基类带来的______问题,C++语言
提供了虚基类机制。
32. 程序段的输出结果是【 】。
int x=3,y=2,z=1;
count<<(x/y&~z);
33. 实现编译时的多态性的机制称为【 】,实现运行时的多态性的机制
称为【 】。
34. 软件开发过程主要分为需求分析、设计、编码与测试4个阶段,其
中______阶段产生“软件需求规格说明书”。
35. 类通过______与外界发生关系。
四、程序改错题(10题)
36.使用VC++6.0打开考生文件夹下的源程序文件1.cpp。本程序要
求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输
入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕
中。
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在//******error******的下面。
试题程序:
#include
voidmain
{
inti=0;
charstr[120];
cout<<"Enterastringendwith?."< //********error******** cin.getline(str,120); //********error******** while(str) { //********error******** if(str[i])=a) str[i]=str[i]-a+A; i++; } cout< return; } 37.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序 运行时有错误,请改正错误,使程序正常运行,并且要求最后一个 catch必须抛出执行的任何异常。 程序异常,输出信息为 error O ERROR 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在//******error******的下面。 试题程序: #include intmain { try { throw("error"); } //********error******** catch(chars) { cout< } try { throw((int)0); } //********error******** catch { cout< } try { throw(O); throw("error"); } //********error******** catch { cout<<"ERROR"< } return0; } 38.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,但该程 序运行有问题,请改正main函数中的错误,使该程序的输出结果正 确。 程序输出: 8 8 注意:错误的语句在/********error********/的下面。修改该语句 即可,其他的语句不能修改。 试题程序: #include(iostream.h> classCO { public: /********error********/ staticintn=0: CO { n++: } ~CO { n--: } }: /********error********/ intCO::n; voidmain { COobj; COobj2[7]; CO*C=NULL: c=&obj: /********error********/ eout< cout< } 39.使用VC++6.0打开考生文件夹下的源程序文件 1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实 现的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在 //******error******的下面。 试题程序: #include #include //********error******** usingstd; voidWriteFile(char*s) { ofstreamout1; //********error******** out1.open("1.txt",binary|app); for(inti=0;s[i]!=0;i++) { //********error******** out1.puts(s[i]); } out1.close; } voidClearFile { ofstreamout1; out1.open("1.txt"); out1.close; } intmain { chars[1024]; ClearFile; cout<<"pleaseinputastrin9:"< cin.getline(s,1024); WriteFile(s); return0; } 40.使用VC++6.0打开考生文件夹下的源程序文件1.cpp。本程序 要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可 能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出 到屏幕中。 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在//******error******的下面。 试题程序: #include voidmain { inti=0; charstr[120]; cout<<"Enterastringendwith?."< //********error******** cin.getline(str,120); //********error******** while(str) { //********error******** if(str[i])=a) str[i]=str[i]-a+A; i++; } cout< return; } 41.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序 运行有问题,请改正main函数中的错误,使程序的输出结果为: number=1 number=10 number=100 注意:不要改动main函数,不能增加或删除行。也不能更改程序的结 构,错误的语句在//******error******的下面。 试题程序: #include classTC { public: TC(inti) { number=i; } voidSetNumber(intm) { number=m; } intGetNumberconst { returnnumber; } voidPrintconst { cout<<"number="< } private: intnumber; }; voidmain { //********error******** TCobjl; objl.Print; TCobj2(3); //********error******** objl.number=10; //********error*‰****** TC.SetNumber(100); objl.Print; obj2.Print; } 42.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序 运行时有错,请改正其中的错误,使程序正常运行,输出的结果为 Constructor,i=0, Destructor 注意:错误的语句在//******error******的下面,修改该语句即 可。 试题程序: #include(iostream.h) classTC { inti; public: TC; voiddisplay; ~TC; }; //******error****** TC:TC { cout<<"Constructor"<<","; i=0; ) //******error****** TC:display { tout<<"i="< } //******error****** TC:TC { COUI<<"Destructor"< } voidmain { TCa; a.display; } 43.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运 行有问题,请改正main函数中的错误,使程序的输出结果为: number=1 number=10 number=100 注意:不要改动main函数,不能增加或删除行。也不能更改程序的结 构,错误的语句在//******error******的下面。 试题程序: #include classTC { public: TC(inti) { number=i; } voidSetNumber(intm) { number=m; } intGetNumberconst { returnnumber; } voidPrintconst { cout<<"number="< } private: intnumber; }; voidmain { //********error******** TCobjl; objl.Print; TCobj2(3); //********error******** objl.number=10; //********error*‰****** TC.SetNumber(100); objl.Print; obj2.Print; } 44.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运 行时有错,请改正其中的错误,使程序正常运行,输出的结果为 Constructor,i=0, Destructor 注意:错误的语句在//******error******的下面,修改该语句即可。 试题程序: #include(iostream.h) classTC { inti; public: TC; voiddisplay; ~TC; }; //******error****** TC:TC { cout<<"Constructor"<<","; i=0; ) //******error****** TC:display { tout<<"i="< } //******error****** TC:TC { COUI<<"Destructor"< } voidmain { TCa; a.display; } 45.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序 运行时有错。请改正程序中的错误,使程序输出的结果为 100 37 32 注意:错误的语句在//******error******的下面,修改该语句即 可。 试题程序: #include //******error****** voidmain { //******error****** intm=0142: //******error****** intn=0X27: intq=32; cout<<m<<endl; cout<<n<<endl; cout<<q<<endl; return; } 五、综合应用题(2题) 46.使用VC++6.0打开考生文件夹下的源程序文件3.cpp。类 People包括姓名和年龄两个字段。函数fun获得年龄比较大的人的姓 名,然后输出这个姓名到屏幕。 其中定义的类并不完整,按要求完成下列操作,将类的定义补充完 整。 (1)完成类的构造函数功能,请在注释1后添加适当的语句。 (2)完成构造函数对姓名的赋值,请在注释2后添加适当的语句。 (3)定义类的友元函数fun,请在注释3后添加适当的语句。 (4)补充函数fun的年龄比较功能,请在注释4后添加适当的语句。 注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其 他的程序代码。 试题程序: #include classPeople { public: //********1******** { inti; for(i=0;sUserName[i]!=0;i++) {m_UserName[i]=sUserName[i]; } //********2******** m_Old=nOld; } private: charm_UserName[32]; intm_Old; //********3******** }; voidfun(char*s,People&personl,People&person2 { //********4******** if { for(inti=0;personl.m_UserName[i]!=0;i+ +) { s[i]=personl.m_UserName[i]; s[i+1]=0; } } else { for(inti=0;person2.m_UserName[i]!=0;i+ +) {s[i]=person2.m_UserName[i]; s[i+1]=0; } } } voidmain { chars[32]; Peoplepl("abc",20);
版权声明:本文标题:2021年福建省莆田市全国计算机等级考试C++语言程序设计真题(含答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1716224326a692251.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论