高级C++练习题2013

合集下载

高级语句程序设计(C)经典试题及答案讲解

高级语句程序设计(C)经典试题及答案讲解

高级语句程序设计(C++)经典试题一、单项选择题1、在一个C++程序中,main函数的位置()。

①必须在程序的开头②必须在程序的后面③可以在程序的任何地方④必须在其它函数中间2、一个C++程序的执行是从()。

A、本程序的main函数开始,到main函数结束B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C、本程序的main函数开始,到本程序文件的最后一个函数结束D、本程序文件的第一个函数开始,到本程序main函数结束3、在计算机语言中,以下描述正确的是:A、高级语言较低级语言更远离对硬件的直接操作。

B、高级语言较低级语言更接近对硬件的直接操作。

C、C++是世界上第一种计算机高级语言。

D、C语言是由美国的微软公司研制成功的。

4、C++源程序的实现一般要经过三个步骤,其中不包括:A、编辑B、维护C、编译D、运行5、设i=1,j=2,则表达式i++ +j的值为()。

① 1 ② 2 ③ 3 ④6、设i=1,j=2,则表达式++i+j的值为()。

① 1 ② 2 ③ 3 ④7、执行下列语句后,x的值是()。

int x,y;x=y=1; ++x||++y;①不确定② 0 ③ 1 ④ 28、已知x=5,则执行语句x+=x-=x×x; 后,x的值为()。

① 25 ② 40 ③ -40 ④ 209、常量是在程序中:A、经常被使用的量。

B、最高级的量。

C、按固定周期使用的量。

D、按固定值使用的量。

10、有如下程序段:int a=14,b=15,x;char c=’A’;x=(a&&b)&&(c<’B’);执行该程序段后,x的值为()。

① ture ② false ③ 0 ④ 111、下面程序的输出结果是()。

#include <iostream>using namespace std;int main( ){ int a=6,b=6;if(a>5)a-=1;b+=1;elsea+=1;b-=1;cout<<”a=”<<a<<endl;cout<<”b”<<b<<endl;return 0; }① 5 7 ② a=5 b=7 ③ a=5 b=6 ④编译时出错12、下面程序的输出结果是()#include <iostream>using namespace std;int main( ){ int a=6,b=6;if(a>5){a-=1;b+=1;}else{a+=1;b-=1;}cout<<”a=”<<a<<endl;cout<<”b=”<<b<<endl;return 0; }① 5 7 ② a=5 b=7 ③ a=5 b=6 ④ a=6 b=513、下面程序的输出结果是()#include <iostream>using namespace std;int main( ){ int x=6,y=8;if(x++<6)cout<<++y<<endl;if(x>6)cout<< --y<<endl;elsecout<<y++<<endl;return 0;}① 8 ② 7 ③ 9 ④编译时出错14、下面程序的输出结果是()#include <iostream>using namespace std;int main( ){ int x=6,y=8;if(++x<6)cout<<++y<<endl;elsecout<<y++<<endl;if(x>6)cout<< --y<<endl;return 0; }① 8 8 ② 9 7 ③ 7 8 ④编译时出错15、下面程序的输出结果是()#include <iostream>using namespace std;f(int a){ int b=0;static int c=3;b++;c++;return (a+b+c);}int main( ){ int a=2,i;for(i=0;i<3;i++)cout<<f(a)<<endl;return 0;}① 7 8 9 ② 7 7 7 ③ 7 10 13 ④ 7 9 1116、下面程序的输出结果是()#include <iostream>using namespace std;void fun(int x,int y,int z){ z=x×x+y×y; }int main( ){ int z=68;fun(5,2,z);cout<<z;return 0; }① 0 ② 29 ③ 68 ④无定值17、下面程序的输出结果是()#include <iostream>using namespace std;int fun(int a,int b){ return (++a×b++); }int main( ){ int x=3,y=4,z=5,r;r=fun(fun(x,y),z);cout<<r<<x<<y<<endl;}① 85 3 4 ② 60 3 4 ③ 126 4 5 ④ 85 4 518、下面的程序中,当输入4、2时,其输出结果是()#include <iostream>using namespace std;long fib(int n){ if(n>2) return (fib(n-1)+fib(n-2));else return (n); }int main( ){ int i;cout<<”请输入一个整数:”;cin>>i; cout<<endl;cout<<fib(i)<<endl;return 0; }① 5 1 ② 4 2 ③ 5 2 ④ 6 219、下面程序的输出结果为()#include <iostream>using namespace std;unsigned func(unsigned num){ unsigned d=1,k;do {k=num%10;num/=10;}while(num);return (k); }int main( ){ unsigned n=26;cout<<func (n);return 0; }① 2 ② 4 ③ 6 ④ 520、下面程序的输出结果为()#include <iostream>using namespace std;func (int a,int b){ int c;c=a×b;return (c );}int main( ){int x=6,y=7,z=8,r;r=func((x--,y,x×y),z--);cout<<r;return 0; }① 294 ② 245 ③ 280 ④ 41621、执行语句int i=10,*p=&i;后,下面描述错误的是()。

高级语言程序设计练习题-4.2

高级语言程序设计练习题-4.2

(一)填空题:1.C语言程序的基本单位是____函数__________.2.在C语言中,数字056是一个_______八_______进制数,0xFF是一个_________十六_____进制数。

3。

若程序中使用了函数scanf()4. 若程序中使用了函数strlen(),5.C语言程序的三种基本结构是_____循环_________、_______顺序_______、_______选择_______.6。

若程序中使用了函数sqrt(),则必须包含的头文件名为math。

h。

7.C语言中运算对象必须是整型的运算符是%。

8.C语言中整型数据除以整型数据得到整形数据。

9.C语言源程序文件的扩展名是 .c ;经过编译后,所生成文件的扩展名是 ;经过链接后,所生成的文件扩展名是 .exe 。

10。

若定义int a[3][5];则a数组所含数组元数个数是 15 ,sizeof(a)的值是 4 ,其首地址是 a[0][0] .11.在C语言中,数组名是数组的 ,同时它是一个_____指针_ 常量.12.判断字符型变量ch是否为小写英文字母的C语言表达式为____________________________。

13.判断变量a的数值范围1≤a≤10的C语言表达式是______a>=1&&a〈=10____________ _________ _。

14.C语言运算符中,++和——的结合方向(运算方向)是__________从右向左___ 函数读入字符串.16.函数直接或间接地调用自己本身称为__________递归_____________.17.已知w=1,x=2,y=3,z=3,a=4,b=2;则执行语句(a=w〉x)&&(b=y>z);后,a 的值为 4 ,b的值为 2 .18.字符串”student”的长度是 8 ,它在内存中的字节数为。

19. 设a、b、c为整型数,且a=2,b=3,c=4,则执行语句"a*=16+(b++)-(++c);”后,a的值是 28 .20.执行int x,y,z;x=y=1;z=(x++,++y,y++);后,则x= 1 ,y= 3 ,z= 3 .21.定义语句int x,y;,执行y=(x=1,++x,x+2);语句后,则x= 2 ,y=4 .22。

NOIP2013提高组C++试题

NOIP2013提高组C++试题

第十九届全国青少年信息学奥林匹克联赛初赛提高组C++语言试题竞赛时间:2013 年10 月13 日14:30~16:30选手注意:✍试题纸共有12 页,答题纸共有2 页,满分100 分。

请在答题纸上作答,写在试题纸上的一律无效。

✍不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。

一、单项选择题(共15 题,每题1.5 分,共计22.5 分;每题有且仅有一个正确选项)1. 一个32 位整型变量占用()个字节。

A. 4B. 8C. 32D. 1282. 二进制数11.01 在十进制下是()。

A. 3.25B. 4.125C. 6.25D. 11.1253. 下面的故事与()算法有着异曲同工之妙。

从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:?从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事....’?A. 枚举B. 递归C. 贪心D. 分治4. 1948 年,()将热力学中的熵引入信息通信领域,标志着信息论研究的开端。

A. 冯·诺伊曼(John von Neumann)B. 图灵(Alan Turing)C. 欧拉(Leonhard Euler)D. 克劳德·香农(Claude Shannon)5. 已知一棵二叉树有2013 个节点,则其中至多有()个节点有2 个子节点。

A. 1006B. 1007C. 1023D. 10246. 在一个无向图中,如果任意两点之间都存在路径相连,则称其为连通图。

右图是一个有5 个顶点、8 条边的连通图。

若要使它不再是连通图,至少要删去其中的()条边。

A. 2B. 3C. 4D. 57. 斐波那契数列的定义如下:F1 = 1, F2 = 1, F n = F n – 1 + F n – 2 (n ≥ 3)。

如果用下面的函数计算斐波那契数列的第n 项,则其时间复杂度为()。

高级语言程序设计真题2013年上半年

高级语言程序设计真题2013年上半年

高级语言程序设计真题2013年上半年(总分:100.00,做题时间:90分钟)一、{{B}}单项选择题{{/B}}(总题数:15,分数:30.00)1.正确的自定义标识符是______∙ A.2c∙ B.x#y∙ C.case∙ D.Word_2(分数:2.00)A.B.C.D. √解析:[考点] 标识符的定义 [解析] C语言规定,标识符是由字母或下画线开头的字母、数字、下画线组成的字符序列,而且不能是C语言的保留字。

2.设int a=2,b=3,c;,正确的赋值语句是______∙ A.(a+b)++;∙ B.b=a%2.5;∙ C.a+=b+=5;∙ D.c=a+b=5;(分数:2.00)A.B.C. √D.解析:[考点] 运算符的规则 [解析] A项中,表达式不可自增1或自减1;B项中模运算的对象必须是整型数据;D项中,先运算a+b=8,不可给常量赋值。

3.设int a=1,b=3,c;,执行语句c=(a!=b)?++a:b++;后,c的值是______∙ A.1∙ B.2∙ C.3∙ D.4(分数:2.00)A.B. √C.D.解析:[考点] 条件运算符 [解析] 条件运算符的格式为:条件一?条件二:条件三。

先运算条件一,非0则运算条件二,为0则运算条件三。

a!=b的值为1,运行++a。

运算后c的值为2。

4.6-1/2+5%2的值是______∙ A.2.6∙ B.3.6∙ C.4.1∙ D.4.6(分数:2.00)A.B.C.D. √解析:[考点] 除法和整除运算 [解析] 对象都是整数的除运算,除得的商是整数,商有小数则截去小数部分,故1/2的值为0;模运算的结果是整除后的余数,故5%2的值为1;因此3.6-0+1=4.6。

5.设int a=-1,b=3;,执行表达式++a&&(b=5)后,a和b的值分别是______∙ A.-1.3∙ B.0.3∙ C.0.5∙ D.-1.5(分数:2.00)A.B. √C.D.解析:[考点] 逻辑运算符 [解析] 先运算++a,a的值变为0。

2013年计算机二级C++模拟试题及答案(2)

2013年计算机二级C++模拟试题及答案(2)

⼀、选择题 1.已知⼀棵⼆叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该⼆叉树的后序遍历为 A)GEDHFBCA B)DGEBHFCA C)ABCDEFGH D)ACBFEDHG 【参考答案】 B 2.树是结点的集合,它的根结点数⽬是 A)有且只有1 B)1或多于1 C)0或1 D)⾄少2 【参考答案】 A 3.如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是 A)e3,e1,e4,e2 B)e2,e4,e3,e1 C)e3,e4,e1,e2 D)任意顺序 【参考答案】 B 4.在设计程序时,应采纳的原则之⼀是 A)不限制goto语句的使⽤ B)减少或取消注解⾏ C)程序越短越好 D)程序结构应有助于读者理解 【参考答案】 D 5.程序设计语⾔的基本成分是数据成分、运算成分、控制成分和 A)对象成分 B)变量成分 C)语句成分 D)传输成分 【参考答案】 D 6.下列叙述中,不属于软件需求规格说明书的作⽤的是 A)便于⽤户、开发⼈员进⾏理解和交流 B)反映出⽤户问题的结构,可以作为软件开发⼯作的基础和依据 C)作为确认测试和验收的依据 D)便于开发⼈员进⾏需求分析 【参考答案】 D 7.下列不属于软件⼯程的3个要素的是 A)⼯具 B)过程 C)⽅法 D)环境 【参考答案】 D 8.单个⽤户使⽤的数据视图的描述称为 A)外模式 B)概念模式 C)内模式 D)存储模式 【参考答案】 A 9.将E-R图转换到关系模式时,实体与联系都可以表⽰成 A)属性 B)关系 C)键 D)域 【参考答案】 B 10.SQL语⾔⼜称为 A)结构化定义语⾔ B)结构化控制语⾔ C)结构化查询语⾔ D)结构化操纵语⾔ 【参考答案】 C 11.下⾯关于类和对象的描述中,错误的是 A)类就是C语⾔中的结构体类型,对象就是C语⾔中的结构体变量 B)类和对象之间的关系是抽象和具体的关系 C)对象是类的实例,⼀个对象必须属于⼀个已知的类 D)类是具有共同⾏为的若⼲对象的统⼀描述体 【参考答案】 A 12.以下各选项组中,均是C++语⾔关键字的组是 A)public operator this B)shod string static C)it while >= D)private cout printf 【参考答案】 A 13.设int a=10,b=11,c=12;,表达式(a+b) A)2 B)0 C)-2 D)1 【参考答案】 B 14.下列描述正确的是 A)表⽰m>n为true或mn&&m B)switch语句结构中必须有default语句 C)if语句结构中必须有else语句 D)如果⾄少有⼀个操作数为true,则包含"||"运算符的表达式为true 【参考答案】 D 15.下列语句中不是死循环的是 A)int i=10; while (1) { i--; if(i==1)break; } B)for(int i=1;i<10;i++) { i--; } C)int i=0; do{ i++; }while(i>=0); D)int i=1; for(;;)i=i+1; 【参考答案】 A 16.下⾯关于break语句的描述中,不正确的是 A)break可以⽤于循环体内 B)break语句可以在for循环语句中出现多次 C)break语句可以在switch语句中出现多次 D)break语句可⽤于if条件判断语句内 【参考答案】 D 17.下⾯关于数组的描述错误的是 A)在C++语⾔中数组的名字就是指向该数组第⼀个元素的指针 B)长度为n的数组,下标的范围是0~n-1 C)数组的⼤⼩必须在编译时确定 D)数组只能通过值参数和引⽤参数两种⽅式传递给函数 【参考答案】 D 18.下⾯程序错误的语句是 ① #include ② void main() ③ { ④ int *p=new int[1]; ⑤ p=9; ⑥ cout < ⑦ delete []p; ⑧ } A)④ B)⑤ C)⑥ D)⑦ 【参考答案】 B 19.下⾯的哪个选项不能作为函数的返回类型? A)void B)int C)new D)long 【参考答案】 C 20.不能作为重载函数的调⽤的依据是 A)参数个数 B)参数类型 C)函数类型 D)函数名称 【参考答案】 D 21.下列程序的输出结果为 #include int func(int n) { if (n<1)return 1; else return n+func(n-1); return 0; } void main() { cout< A)0 B)10 C)15 D)16 【参考答案】 D 22.在C++语⾔中,数据封装要解决的问题是 A)数据的规范化 B)便于数据转换 C)避免数据丢失 D)防⽌不同模块之间数据的⾮法访问 【参考答案】 D 23.以下程序中,错误的⾏为 (1) #include (2) ClassA (3) { (4) public: (5) int n=2; (6) A(int val){cout< (7) ~A( ){} (8) }; (9) void main( ) (10) { (11) Aa(o); (12) } A)(5) B)(6) C)(7) D)(11) 【参考答案】 A 24.对类的构造函数和析构函数描述正确的是 A)构造函数可以重载,析构函数不能重载 B)构造函数不能重载,析构函数可以重载 C)构造函数可以重载,析构函数也可以重载 D)构造函数不能重载,析构函数也不能重载 【参考答案】 A 25.下⾯程序的运⾏结果为 #include class A { int num; public: A(int i){num=i;} A(A &a){num=a.num++;} void print(){cout< void main() { A a (1),b(a); a.print(); b.print(); } A)11 B)12 C)21 D)22 【参考答案】 C 26.下⾯对静态数据成员的描述中,正确的是 A)静态数据成员是类的所有对象共享的数据 B)类的每个对象都有⾃⼰的静态数据成员 C)类的不同对象有不同的静态数据成员值 D)静态数据成员不能通过类的对象调⽤ 【参考答案】 A 27.如果类A被说明成类B的友元,则 A)类A的成员即类B的成员 B)类B的成员即类A的成员 C)类A的成员函数不得访问类B的成员 D)类B不⼀定是类A的友元 【参考答案】 D 28.可以⽤p.a的形式访问派⽣类对象p的基类成员a,其中a是 A)私有继承的公有成员 B)公有继承的私有成员 C)公有继承的保护成员 D)公有继承的公有成员 【参考答案】 D 29.建⽴派⽣类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派⽣类的构造函数)这3种构造函数的调⽤顺序为 A)abc B)acb C)cab D)cba 【参考答案】 A 30.下⾯关于虚函数的描述,错误的是 A)在成员函数声明的前⾯加上virtual修饰,就可把该函数声明为虚函数 B)基类中说明了虚函数后,派⽣类中对应的函数也必须说明为虚函数 C)虚函数可以是另⼀个类的友元函数,但不能是静态成员函数 D)基类中说明的纯虚函数在其任何派⽣类中都必须实现 【参考答案】 B 31.下⾯关于模板的描述,错误的是 A)函数模板和类模板的参数可以是任意的数据类型 B)类模板不能直接使⽤,必须先实例化为相应的模板类,然后定义了模板类的对象后才能使⽤ C)函数模板不能直接使⽤,需要实例化为模板函数后才能使⽤ D)类模板的成员函数都是模板函数 【参考答案】 A 32.语句ofstream f("SALARY.DAT",ios::app|ios::binary);的功能是建⽴流对象f,试图打开⽂件SALARY.DAT并与之连接,并且 A)若⽂件存在,将⽂件写指针定位于⽂件尾;若⽂件不存在,建⽴⼀个新⽂件 B)若⽂件存在,将其置为空⽂件;若⽂件不存在,打开失败 C)若⽂件存在,将⽂件写指针定位于⽂件⾸;若⽂件不存在,建⽴⼀个新⽂件 D)若⽂件存在,打开失败;若⽂件不存在,建⽴⼀个新⽂件 【参考答案】 A 33.下⾯程序的运⾏结果是 #include void main() { int num=1; int &ref=num; ref=ref+2; cout < num=num+3; B)16 C)36 D)33 【参考答案】 C 34.下⾯程序的运⾏结果是 #include void fun(int *a,int *b) { int x=*a; *a=*b; *b=x; cout< } void main() { int x=1, y=2; fun(&x,&y); cout< A)1212 B)1221 C)2112 D)2121 【参考答案】 D 35.下列程序的运⾏结果为 #include int i=0; class A{ public: A(){i++;} }; void main() { A a,b[3],*c; c=b; cout< A)2 B)3 【参考答案】 C ⼆、填空题 (1)数据结构分为逻辑结构与存储结构,线性链表属于【1】。

C语言习题练习(附答案)

C语言习题练习(附答案)

《高级语言程序设计》习题一.填空题1. 以下条件表达式可计算1+|a|的值,填空完成语句:a>=0 ?(1+a ):( 1-a )2. 函数max 定义的首部为:int max(int x[],int n),该函数完成实现寻找长度为n 的数组x 中的最大元素。

若在主函数中有定义:int c,a[10];并要求函数调用后,变量c 存放数组a 中的最大元素,则函数调用语句应为:(c=max(a,10);)3. 若有int i=5; 则循环语句while(i > = 1) i - -;执行后,i 的值为 (0)。

4. 能正确表示逻辑关系:“0≤a <10”的C 语言表达式是(0<=a && a<10)。

5. 设int a[2][3] = {{2},{3}};则数组元素( a[1][0] )的值为3。

6. 表达式 (int)(3.0/2.0)的值是( 1 )。

7. 有定义: int x=3, y=2; 执行x/=y+1; 语句后x 的值为( 1 ) 。

8. 有定义: int x=2, y=0; 表达式 (!x||y) 的值为( 0 )。

9. 有定义:char str[]= “Hello!”; 则数组str 的长度为( 7 )。

10. 有定义:int i=5; 则循环语句while(i>=1) i=i-2; 执行后变量i 的值为( -1 )。

11. 已知 ‘A ’~ ‘Z ’ 的ASCII 码为65~90,当执行int x= ‘D ’+5; 语句后x 的值为( 73 )。

12. 有定义int a[6]={1,2,3,4,5,6},*p=a; 则*(p+2)的值为( 3 ),*(++P )的值为( 2 )。

13. 如果在调用一个函数过程中,又调用另一个函数,称为函数的( 嵌套 )调用。

如果在调用一个函数的过程中又直接或间接地调用该函数本身,称为函数的( 递归 )调用。

全国2013年10月高等教育自学考试C++程序设计试题

全国2013年10月高等教育自学考试C++程序设计试题

绝密★考试结束前全国2 0 1 3年1 0月高等教育自学考试C++程序设计试题课程代码:04737请考生按规定用笔将所有试题的答案涂、写在答题纸上。

选择题部分注意事项:1.答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。

2.每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。

如需改动,用橡皮擦干净后,再选涂其他答案标号。

不能答在试题卷上。

一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。

错涂、多涂或未涂均无分。

1.下列不属于C++关键字的是A. externB.gotoC.freeD.default2.C++中定义标准输入的库为A.stdioB.mathC.istreamD.stdlib3.My是一个类,则执行语句My a[3],*[2];之后,自动调用构造函数次数为A.2 B.3 C.4 D.54.下列语句错误的是A. int val( 20);B.extern int val( 20);C. const int val;D.extern const int val;5.下列说法中,有关构造函数是正确的是A.任何一类必定有构造函数B.可定义没有构造函数的类C.构造函数不能重载 D.任何一类必定有缺省的构造函数6.下面关于类和对象说法不正确是A.类由数据与函数组成 B.一个对象必属于某个类C.对象是类的实例 D.一个类的对象只有一个7.下面选项中不是类成员函数的是A.构造函数 B.析构函数C.友元函数 D.静态函数8.在C++中类之间的继承关系具有A.自反性 B.对称性C.传递性 D.反对称性9.C++中类的成员默认为A. publicB.privateC.protectedD.static10.C++中要实现动态联编,调用虚函数时必须使用A.基类指针B.类名C.派生类指针 D.对象名11.下面对析构函数的正确描述是A.系统不能提供默认的析构函数B.析构函数必须由用户定义C.析构函数没有参数D.析构函数可以设置默认参数12.在下面的二维数定义正确的是A.int ary[5][];B.int ary[][5]={{0,1,2}};C.int ary[][5];D.int ary[5,5];13.以下说法中正确的是A.C++程序总是从第一个定义的函数开始执行B.C++程序总是从main函数开始执行C.C++中函数必须有返回值D.C++中函数名必须唯一14.对C++中主函数描述正确的是A.名称为main,可为多个 B.名称不限,可为多个C.名称为main,必须有且只能有—个 D.名称不限,必须有且只能有—个15.下面声明纯虚函数语句正确的是A. void fun( ) =0;B.virtual void fun( )=0;C. virtual voicl fun( );D.virtual void fun( ){ };16.对于拷贝构造函数和赋值操作的关系,正确的描述是A.拷贝构造函数和赋值操作是完全一样的操作B.进行赋值操作时,不会调用类的构造函数C.当调用拷贝构造函数时,类的对象正在被建立并被初始化D.拷贝构造函数和赋值操作不能在同一个类中被同时定义17.使用重载函数的目的是A.共享函数数据 B.减少代码量C.优化运行效率 D.提高可读性18.C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数C.规定函数说明符必须用原型D.引进了类和对象的概念19.假定有“char * p="Hello";”,若要输出这个字符串的地址值正确的写法为A. cout<<*p;B.cout<<p;C. cout<<&p;D.cout<<(void*)p;20.从本质上看,引用变量是被引用变量的A.拷贝B.别名C.复制 D.克隆非选择题部分注意事项:用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。

2013年计算机二级C++模拟试题及答案(3)

2013年计算机二级C++模拟试题及答案(3)

⼀、选择题 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< void show()const{cout< privated: int x;int y; }; 考试⼤(www.Examda。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面向对象程序设计练习题一.概念题1.定义形式如下的类,C++编译器自动为该类产生的四个缺省函数是什么?写出其原型。

class MyClass{public:void SetX(int);private:int x;};答:无参构造函数,拷贝构造函数,析构函数,赋值运算符函数。

MyClass();MyClass(const MyClass& );~MyClass();MyClass& operator=(const MyClass& );2.定义形式如下的类,写出C++编译器自动生成的拷贝构造函数和赋值运算符函数的定义。

class MyClass{public:void SetX(int);private:int x;};答:MyClass(const MyClass& a){ x=a.x; }MyClass& MyClass::operator=(const MyClass& a){ x=a.x;return *this; }3.函数声明和函数定义有什么区别?答:1) 函数声明是函数的原型,强调函数如何被使用,不包含函数的实现代码;2) 函数定义给出函数的实现代码。

4.拷贝构造函数在哪几种情况下会被调用?答:1.当类的一个对象去初始化该类的另一个对象时;2.如果函数的形参是类的对象,调用函数进行形参和实参结合时;3.如果函数的返回值是类对象,函数调用完成返回时。

5.构造函数与普通成员函数相比有什么不同?答:构造函数是类的一种特殊成员函数,一般情况下,它是专门用来初始化数据成员的。

构造函数的名字必须与类名相同,它不具有任何返回类型。

构造函数在创建对象时由系统自动调用。

6.创建派生类对象时,构造函数的调用顺序是什么?答:1.先调用基类构造函数2.按定义顺序初始化对象数据成员3.最后调用本类的构造函数。

7.哪几种情况必须用到初始化成员列表?答:类的常量数据成员初始化;类的引用成员初始化。

类的对象成员初始化,而该对象没有无参构造函数。

基类成员初始化,而基类没有无参构造函数。

8.C++头文件中通常会包含哪些内容?类的定义、常量定义、函数声明、全局变量声明9.什么是常对象?答:常对象是指在任何场合都不能对其成员的值进行修改的对象。

10.什么叫抽象类?答:包含纯虚函数的类,不能定义抽象类对象,可以定义抽象类的指针或引用,指向或引用派生类对象。

11.同类对象间是怎样实现数据共享的?答:通过类的静态数据成员来实现。

静态数据成员属于类,而不为某个对象所私有,所有实例对象共享类的静态数据成员。

12.const char *p1; char * const p2;的区别答:1) const位于星号的左侧,const用来修饰指针所指向的变量,即指针指向为常量;2)const位于星号的右侧,const用来修饰指针本身,即指针本身是常量。

13.函数重载是什么意思?它与虚函数的概念有什么区别?答:1) 函数重载是相同作用域内存在多个同名的函数,编译系统在编译阶段通过函数参数个数、参数类型不同来区分该调用哪一个函数,即实现的是静态的多态性,但不能仅仅通过函数返回值不同来实现函数重载。

2) 虚函数在基类中通过使用关键字virtual来声明一个函数为虚函数,该函数的功能可能在将来的派生类中重新定义或者在基类的基础之上进行扩展,系统只能在运行阶段才能动态决定该调用哪一个函数,所以实现的是动态的多态性。

14.函数重载与函数覆盖的区别?答:函数重载是在相同作用域内,存在多个同名的函数,但函数参数或参数类型不同,调用函数时编译器通过实参类型匹配某个函数版本,属于静态多态性;函数覆盖指基类和派生类之间存在同名函数,派生类中的函数隐藏了基类的同名函数的现象。

15.构造函数和析构函数是否可以被重载,为什么?答:构造函数可以被重载,析构函数不可以被重载。

因为构造函数可以带多个参数,而析构函数不能带参数。

16.分析正误:抽象类不能产生实例,所以不需要有构造函数。

答:错。

抽象类中可以包含数据成员,派生类对象初始化时需要通过抽象基类的构造函数完成对其数据成员的初始化。

17.main 函数执行以前,还会执行什么代码?答案:全局对象的构造函数会在main 函数之前执行。

18.delete与delete []区别:delete只会调用一次析构函数,而delete[]会调用动态分配的多个对象的析构函数。

19.解释堆和栈的区别。

答案:栈(stack):由编译器自动分配释放,存放函数的参数、局部变量等。

通常在超出作用域后由系统自动释放。

堆(heap):一般由程序员负责分配与释放,若程序员不释放,占用的内存直到程序结束才由OS回收。

20.一个类的构造函数和析构函数什么时候被调用,是否需要手工调用?答:构造函数在创建类对象的时候被自动调用,析构函数在类对象生命期结束时。

构造函数和析构函不需要手工调用,由系统自动调用。

21.构造函数和析构函数的调用顺序?析构函数为什么要定义为虚函数?答案:构造函数的调用顺序:基类构造函数→对象成员构造函数→派生类构造函数;析构函数的调用顺序与构造函数相反:派生类析构函数→对象成员析构函数→基类析构函数。

析构函数定义为虚函数是为了防止析构不彻底,造成内存泄漏。

22.请说出类中private,protect,public三种访问限制类型的区别答案:private是私有类型,只有本类中的成员函数才能访问;protect是保护型的,本类和子类成员函数可以访问;public是公有类型,本类和子类成员函数可以访问,类外部通过对象可以间接访问。

23.在什么时候需要使用“常引用”?答案:如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。

24.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?答案:全局变量储存在静态数据区,程序加载时分配并初始化,程序结束时释放;局部变量在栈中,进入变量作用域后分配,超出其作用域后释放;全局变量不初始化会执行缺省初始化,如整型变量缺省初始化为0,局部变量不初始化不会执行缺省初始化,往往为垃圾值。

25.内存的分配方式答:分配方式有三种,1、静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。

2、栈上分配,函数内的局部变量和形参在栈上分配。

3、堆上分配,也称动态分配,如我们用new分配内存,用delete来释放内存。

26.指针的几种典型应用情况?int *p[n];-----指针数组,每个元素均为指向整型数据的指针。

int (*p) [n];------指向一维数组的指针,这个一维数组含有n个整型数据。

int *p();----------返回指向整型指针的函数。

int (*p) ();------指向函数的指针,要求函数无参并返回整型。

27.Test是一种类类型,现要为其重载前置和后置++运算符,写出它们的原型。

答:前置++:Test& operator++();后置++:Test& operator++(int)28.函数模板和模板函数的区别函数模板是用于在编译阶段生成函数的模板,是生成函数的框架;模板函数是编译阶段,根据函数调用时匹配的参数类型,实际生成的具体函数。

29.说明0、‘\0’、‘0’、“0”的区别答:0表示整数常量,值为0;‘\0’表示ASCII码值为0的字符常量;‘0’表示ASCII码值为48的字符常量;“0”为字符串常量,其中包含‘0’和‘\0’两个字符。

30.说明下面程序中存在的问题#include<iostream>int main(){int arr[10], *p=arr;int i;for( ; p<arr+10;++p)cin>>*p;for(; a<p;++arr)cout<<*arr<<‘0’;return 0;}答:arr为数组名,对应地址不可修改,不能应用++arr运算。

31.有如下定义,请写出访问a[2][3]元素的不同方法int a[4][5];int (*p)[5] = a;答:a[2][3]、p[2][3]、*(a[2]+3)、*(p[2]+3)、*(*(a+2)+3)、*(*(p+2)+3)32.说明组合和继承在复用代码方面的区别答:组合关系描述的是“有一种”关系,一个对象是另一个对象的一部分;继承关系描述的“是一种”关系,实现对象的层次关系。

33.比较vector容器的大小和容量的区别。

答:大小指容器中实际存储元素的个数,通过调用容器的size()方法获得;容量指再次分配内存前最多可以存放的元素数量,通过调用capacity()方法获得。

34.指出Dog类定义中的错误。

#include <iostream>using namespace std;class Dog{public:Dog(){ age=1; weight=10;}Dog(int a,int w){age=a; weight=w;}void play()const{ cout<<age<<endl; cout<<weight++<<endl;} private:const int age;int weight;};答:1) age为常数据成员,不能在构造函数体内赋值,只能通过初始化列表完成初始化;2) play为常成员函数,不能修改数据成员的值。

二.写出程序运行结果1.写出程序输出结果#include<iostream>int main(){int i,j;for(i=0;i<5;i++) {for(j=i;j<5;j++) cout<<’*’;cout<<endl;}return 0;}答案:* * * * ** * * ** * ** *2.写出程序输出结果#include <iostream>using namespace std;int sum( int a, int b=1, int c=3 ) {return a+b+c;}int main(){int sum(int a, int b=3, int c=4);cout<<sum (2)<<endl;cout<<sum (2,5)<<endl;cout<<sum (2,3,6)<<endl;return 0;}答:911113.写出程序输出结果char & elem(char *s, int n){return s[n];}int main(){char str[]=“HelloWorld”;elem(str,1)=‘A’;cout<<str<<endl;return 0;}答:HAlloWorld#include <iostream>using namespace std;int x=10;void main(){int x=15;cout<<x<<endl;cout<<::x<<endl;}答案:15105.写出程序输出结果#include <iostream>using namespace std;template<typename T>T average( T *pd, int n){T sum=0;int i=0;while(i<n)sum+=pd[i++];return sum/n;}int main(){double a[]={2.5,4.5,6.5,8.5};cout<<average(a, 4)<<endl;return 0;}答案:5.5#include <iostream>using namespace std;void xhg(int *a,int *b){int *tmp;tmp=b; b=a; a=tmp;cout<<*a<<' '<<*b<<endl; }int main(){int x(5),y(4);xhg(&x,&y);cout<<x<<' '<<y<<endl;return 0;}答案:4 55 47.写出程序输出结果#include <iostream>using namespace std;void xhg(int &a,int &b){int tmp;tmp=b; b=a; a=tmp;cout<<a<<' '<<b<<endl; }int main(){int x(5),y(4);xhg(x,y);cout<<x<<' '<<y<<endl;return 0;}答案:4 54 58.写出程序输出结果#include <iostream>using namespace std;int ff(int *a,int size){if(size==1)return a[0];return a[size-1]+ff(a,size-1);}int main(){int a[5]={1,2,3,4,5};cout<<“result:”<<ff(a,5)<<endl;return 0;}答案:result:159.写出程序输出结果#include <iostream>using namespace std;class Base {public:void display() {cout<<“Base display”<<endl; } };class Derived : public Base {public:void display() { cout<<“Derived display”<<endl; } };void display(Base & rr){rr.display();}int main(){Base b;Derived d;display(b);display(d);return 0;}答案:Base displayBase display10.写出程序输出结果#include <iostream>using namespace std;class Person{public:Person(){cout<<“Person构造函数!”<<endl;}~Person() {cout<<“Person被析构!”<<endl;}};class Student : public Person{public:Student() {cout<<“Student构造函数!”<<endl;} ~Student() {cout<<“Student被析构!”<<endl;}};class Teacher : public Person{public:Teacher(){cout<<“Teacher构造函数!”<<endl;}~Teacher(){cout<<“Teacher被析构!”<<endl;} };int main(){Student s;Teacher t;return 0;}答案:Person构造函数!Student构造函数!Person构造函数!Teacher构造函数!Teacher被析构!Person被析构!Student被析构!Person被析构!11.写出程序输出结果#include <iostream>using namespace std;class Example{private:int i;public:Example(int n){i=n;cout<<“Constructing.”<<endl;}~Example() { cout<<“Destructing.”<<endl; } int get_i() { return i; }};int sqrt_it(Example o) {return o.get_i()*o.get_i();}int main(){Example x(10);cout<<x.get_i()<<endl;cout<<sqrt_it(x)<<endl;return 0;}答案:Constructing.10100Destructing.Destructing.12.写出程序输出结果#include <iostream>using namespace std;class Test{private:int x;public:Test(int xx=0):x(xx){}Test& operator++(){x++;return *this;}Test operator++(int){Test temp(*this); x++; return temp;} int getValue()const{return x;}};int main(){Test t;cout<<t.getValue()<<endl;cout<<(t++).getValue()<<endl;cout<<(++t).getValue()<<endl;return 0;}答案:213.写出程序输出结果#include <iostream>using namespace std;class Test{public:Test() { cout<<“Default constructor.”<<endl; }Test(const Test& t){ cout<<“Copy constructor!”<<endl; }}void fun(Test p) {}int main(){Test a;fun(a);return 0;}答案:Default Constructor.Copy Constructor.14.写出程序输出结果#include <iostream>using namespace std;class Dog{public:static int number;Dog() {number++;cout<<"New Dog"<<endl;}~Dog() {number--;cout<<"A Dog Die"<<endl;}};int Dog::number=0;int main(){Dog dog;Dog *pDog=new Dog();delete pDog;cout<<Dog::number<<endl;return 0;}答案:New DogNew DogA Dog Die1A Dog Die15.写出程序输出结果#include <iostream>using namespace std;class Animal{public:virtual void Report() { cout<<“Report from Animal!”<<endl; } };class Tiger : public Animal{public:virtual void Report() {cout<<“Report from Tiger!”<<endl; } };class Monkey : public Animal{public:virtual void Report() {cout<<“Report from Monkey!”<<endl;}};void show(Animal *p){p->Report();}int main(){Tiger tiger;Monkey monkey;Animal animal=tiger;show(&tiger);show(&monkey);show(&animal);return 0;}答案:Report from Tiger!Report from Monkey!Report from Animal!16.写出程序输出结果#include <iostream>using namespace std;class Test{public:Test(int xx=1):x(xx){}void output()const{cout<<"x:"<<x<<endl;}private:int x;};int main(){Test t;t.output();t=4;t.output();return 0;}答案:X:1X:417.写出程序输出结果#include <iostream>using namespace std;class Test{public:Test(){cout<<"Default Constructor\n";}Test(int xx):x(xx){cout<<"Int Constructor\n";}Test(const Test& t):x(t.x){cout<<"Copy Constructor\n";}int x;};Test t;int main(){cout<<"--------------------\n";Test tt(t);return 0;}答案:Default Constructor-----------------------Copy Constructor18.写出程序输出结果#include <iostream>using namespace std;int f(int n){if(n<=0)throw n;int s=1;for(int i=1;i<=n;i++)s*=i;return s;}int main(){try{cout<<f(4)<<endl;cout<<f(-2)<<endl;}catch(int n)cout<<“n=”<<n<<“不能计算n!”<<endl;cout<<“程序执行结束”<<endl;}return 0;}答案:24n=-2不能计算n!程序执行结束19.写出程序输出结果#include <iostream>using namespace std;class Base{private:int base;public:Base(int b) {base=b;cout<<“base=”<<b<<endl;}~Base() { }};class Derived : public Base{private:Base bb;int derived;public:Derived(int d,int b,int c) : bb(c) , Base(b){derived=d;cout<<“derived=”<<derived<<endl;~Derived() {}};int main(){Derived d(3,4,5);return 0;};答案:base=4base=5derived=320.写出程序输出结果#include <iostream>using namespace std;class CException{public:virtual void display(){ cout<<“数组访问越界!\n”;}};class CUpperBoundException : public CException{ public:void display(){ cout<<“数组访问超过最大许可下标”<<endl; } };class CLowerBoundException : public CException { public:void display(){ cout<<“数组访问小于最小许可下标”<<endl; } };#define N 3int getElement(int *p,int index){if(index>=N) throw CUpperBoundException();if(index<0) throw CLowerBoundException();return p[index];}int main(){int a[N]={1,2,3};try {cout<<getElement(a,2)<<endl;cout<<getElement(a,-1)<<endl;}catch (CException & ex){ ex.display(); }try { cout<<getElement(a,4)<<endl; }catch(CException & ex) { ex.display(); }return 0;}答案:3数组访问小于最小许可下标数组访问超过最大许可下标21.写出程序输出结果假定用户输入“Every student love C++”,写出程序执行后文件“D:\1.txt”中存储的内容。

相关文档
最新文档