`
guoyiqi
  • 浏览: 1042996 次
社区版块
存档分类
最新评论

(转)迅雷C++试题及解答

 
阅读更多

1.下列程序的输出结果为:(B)
#include<iostream.h>
void main()
{
char* a[ ] = { "hello", "the", "world"};
char** pa = a;
pa++;
cout<<”*pa<<endl;
}
A) theworld B) the C) ello D) ellotheworld
2.已知二叉树后序遍历序列是bfegcda,中序遍历序列是badefcg,它的前序遍历序列是:(B)
A) abcdefg B) abdcefg C) adbcfeg D) abecdfg
3.栈和队列的共同特点是:(C)
A)都是先进先出 B)都是先进后出
C)只允许在短点处插入和删除元素D)没有共同点
4.下面程序的运行结果为:(A)
#include <iostream.h>
void main()
{
int a, x;
for(a = 0, x = 0; a<=1 && !x++; a++)
{
a++;
}
cout<< a << x <<endl;
}
A) 21 B) 22 C) 32 D) 41
5.下列选项,不正确的是:(B) while后没有分号
A) for(int a=1; a<=10; a++);
B) int a=1;
do
{
a++;
}while(a<=10)
C) int a=1;
while(a<=10)
{
a++;
}
D) for(int a= 1; a<=10; a++)a++;
6.下面关于数组的初始化正确的是:(B)
A)char str[2] = {“a”,”b”};
B)char str[2][3]={“a”,”b”};
C)char str[2][3]={{‘a’,’b’},{‘e’,’d’},{‘e’,’f’}};
D)char str[] = {“a”, “b”};

7.下列说法正确的是:(B)
A)内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B)内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
C)类的内联函数必须在类体内定义
D)类的内联函数必须在类体外通过关键字inline定义
8.下面对静态成员的描述中,正确的是:(D)
A)静态数据成员可以在类体内初始化
B)静态数据成员不可以被类的对象调用
C)静态数据成员不能受private控制符的作用
D)静态数据成员可以直接用类名调用
9.下列运算符中,在C++语言中不能重载的是:(C)
A) * B) >= C) :: D) delete
10下面关于多态性的描述,错误的是:(C)
A) C++语言的多态性分为编译时的多态性和运行时的多态性
B)编译时的多态性可通过函数重载实现
C)运行时的多态性可通过模板和虚函数实现//模板的是编译时多态性,而虚函数是运行时
D)实现运行时多态性的机制称为动态绑定
11.如果进栈序列为e1,e2,e3,e4,e5,则可能的出栈序列是:(D)
A)e3,e2,e5,e4,e1
B)e2,e3,e5,e4,e1
C) e3,e2,e4,e5,e1
D)以上都有可能
12下面关于类和对象的描述中,错误的是:(A)
A)类就是C语言中的结构体类型,对象就是C语言中的结构体变量
B)类和对象之间的关系是抽象和具体的关系
C)对象是类的实例,一个对象必须属于一个已知的类
D)类是具有共同行为的若干对象的统一描述体
13.下面关于数组的描述错误的是:D
A) 在C++语言中数组的名字就是指向该数组第一个元素的指针
B) 长度为n的数组,下标的范围是0-n-1
C) 数组的大小必须在编译是确定
D) 数组只能通过值参数和引用参数两种方式传递给函数
注释:
在把数组作为参数传递给函数时,有值传递(by value)和地址传递(by reference)两种方式。
值传递方式中,要在数组参数的尾部加上一对方括号([]),调用函数时只需将数组的地址(即数组名)传递给函数。
例如:如果数组x被声明为:int x[10];
那麽函数被说明为:void byval_func(int[]);

参数int[]告诉编译程序byval_func()函数只有一个参数,即一个由int型值组成的数组。 函数调用时只需将数组名传递给函数:byval_func(x);
#include <stdio.h>
void byval_func(int[]);
void main(void);
void main(void)
{
int x[10];
int y;
for(y=0;y<10;y++)
x[y]=y;
byval_func(x);
}
void byal_func(int i[])
{
int y;
for(y=0;y<10;y++)
printf("%d/n",i[y]);
}
在值传递方式中,数组x将被复制一份,复制所得的数组将被存放在栈中,然后由byval_func()函数接收并打印出来。由於传递给byval_func()函数的是初始数组的一份拷贝,因此在byval_func()函数内部修改传递过来的数组对初始数组没有任何影响。
值传递方法的开销是很大的,因为首先它要完整地复制初始数组并将这份拷贝存放到栈中,这将耗费相当可观的运行时间,因而值传递方法效率较低;其次,初始化数组的拷贝需要占用额外的内存空间(栈中的内存);最后,编译程序需要专门产生一部分用来复制初始数组的代码,这将使程序变大。
地址传递方法克服了值传递方法的缺点。在地址传递方法中,传递给函数的是指向初始数组的指针,不用复制数组,因此程序变得简练,也节省了栈中的内存空间。在地址传递过程中,只需在函数原形中将函数的参数说明为指向数组元素数据类型的一个指针。
例如同样定义一个数组x:int x[10];

那麽函数被说明为:int const_funt(const int*);
参数const int*告诉编译程序const_funt()函数只有一个参数,即指向一个int类型常量的指针。
函数调用时只需将数组的地址传递给函数:const_func(x);
#include <stdio.h>
void const_func(const int*);
void main(void);
void main(void)
{
int x[10];
int y;
for(y=0;y<10;y++)
x[y]=y;
constl_func(x);
}
void const_func(const int*i)
{
int y;
for(y=0;y<10;y++)
printf("%d/n",*(i+y));
}
在值传递方式中,没有复制初始数组并将其拷贝存放在栈中,const_func()函数只接收到指向一个int类型常量的指针,因此在编写程序时要保证传递给const_func()函数的是指向一个由int类型常量组成的数组的指针。const修饰符的作用是防止意外修改初始数组中的某一个元素。
14. 引用标准库时,下面的说法你认为哪个是正确的:B
A) 语句#include “stdlib.h”是正确的,但会影响程序的执行速度
B) 语句#include <stdlib.h>是正确的,而去程序执行速度比#include “stdlib.h”要快
C) 语句#include <stdlib.h>和#include “stdlib.h”都是正确的,程序执行速度没有区别
D) 语句#include “stdlib.h”是错误的
注释:include ""是先从本地目录开始寻找,然后去寻找系统路径,而Include <> 相反先从系统目录,后从本地目录,
15.设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为:C
A) 0 B) 1 C) 2 D) 7
16.不能作为重载函数的调用的依据是:C
A) 参数个数 B)参数类型
C) 函数类型 D)函数名称
17.下列程序的输出结果为:(D)
#include< iostream. h>
int func(int n)
{
  ifn<1)return 1;
elsereturn n+func(n-1);
return 0;
}
void main()
{
cout<<func(5)<<endl;
}
A) 0 B)10 C)15 D)16
18.建立派生类对象时,3种构造函数分别是a(基类的构造函数)b(成员对象的构造函数)c(派生类的构造函数)3种构造函数的调用顺序为:(A)
A)abc  B)acb
C)cab D)cba
19.如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是:D
A)一元运算符 B)二元运算符
C)选项A)和选项B)都可能 D)重载错误
解析:C++中用友元函数重载运算符至少有一个参数,重载一目运算符要有一个参数,重载二目运算符要有两个参数
20. 有以下程序段:D)?
#define F(X,Y) (X)--; (Y)++ (X)*(Y);
int i, a = 3, b = 4;
for( i = 0; i<5; i++) F(a,b)
printf(“%d, %d”, a, b);
输出结果是:()
A) 3, 4 B) 3, 5
C) -2, 5 D) -2, 9
21. 下列for循环的循环体执行次数为:A
for(int i(10), j(1); i=j=0; i++, j--)
A) 0; B) 1; C)无限; D)以上都不对
22. 下面程序的输出结果是D
char *p1= “123”, *p2 = “ABC”, str[50]= "xyz";
strcpy(str+2,strcat(p1,p2));
cout << str;
A)xyz123ABC B)z123ABC
C)xy123ABC D)出错
23.下面函数的执行结果是输出B
char str[ ] = “xunlei”;
char *p = str;
int n = 10;
printf(“%d, %d, %d/n”, sizeof(str), sizeof(p), sizeof(n));
A) 4, 4, 4 B) 7, 4, 4
C) 6, 4, 4 D) 6, 6, 4
33. 有下列程序段:
char *p, *q;
p = (char*) malloc(sizeof(char) * 20);
q = p;
scanf(“%s %s”, p, q);
printf(“%s %s/n”, p, q);
若从键盘输入:abc def, 则输出结果是A
A) def def B) abc def
C) abc d D) d d
解析:q=p;因此p,q指向的是同一段内存.scanf先是把abc写到p指向的空间,再把def写到q指向的空间,也就是同一段空间,因此abc被def覆盖了.
34.现在有以下语句:
struct _THUNDER{
int iVersion;
char cTag;
char cAdv;
int iUser;
char cEnd;
}Thunder;
int sz = sizeof(Thunder);
则执行后,变量sz的值将得到D
A) 11 B) 12 C) 13 D) 16
35. 有如下程序段:
void GetMemeory(char* p)
p = (char*) malloc (100);
void test()
{
char *str=NULL;
GetMemory(str);
strcpy(str,”Thunder”);
strcat(str+2, “Downloader”);
printf(str);
}
请问运行Test函数结果是:D
A)Thunder Downloader B)under Downloader
C)Thunderownloader D)程序崩溃
解析:在函数中给指针分配空间,实际上是给指针的临时变量分配空间,函数结束后,这个临时变量也消亡,而str仍然为NULL,没有为其分配空间,此时strcpy()是肯定会出错的。
36. 函数调用exec((v1,v2), (v3,v4,v5),v6,v7);中,实参的个数是(A)
A) 4 B) 5 C) 6 D) 7
37. p是指向类X的成员m的指针,s是类X的一个对象。现要给m赋值,C是正确的。
A) s.p = 5 B) s->p = 5
C) s.*p = 5 D) *s.p = 5
38. 函数fun(char* p) { return p;}的返回值是B
A)无确切值 B)行参p中存放的地址值
C) 一个临时存储单元的地址 D)行参p自身的地址值
39.a,b均为不等于0的整形变量,以下关系式恒成立的是:C
A) a*b/a*b == 1 B) a/b*b/a == 1
C) a/b*b + a%b == a D) a/b*b == a
40. 设有如下说明:
typedef struct ST{long a; int b; char c[2]; } NEW;
则下面叙述中正确的是:(C)
A)以上的说明形式非法 BST是一个结构体类型
C
NEW是一个结构体类型 DNEW是一个结构体变量
41. 下列表达式正确的是:C
A) 9++ B)(x+y)++ C) c+++c+++c++ D) ++(a-b--)
42.在int b[ ][3] = {{1},{3,2},{4,5,6},{0}};中,sizeof(b) =D
A) 4 B) 12 C) 28 D) 48
43.以下程序的输出结果是:(D)
#defineM(x,y,z) x*y+z
main()
{
int a=1, b=2, c=3;
printf(“%d/n”,M(a+b,b+c,c+a));
}
A)19 B) 17 C) 15 D) 12
44.若有以下定义和语句:
int u=010, v= 0x10, w=10;
printf(“%d,%d,%d/n”,u,v,w);
则输出结果是:(A)
A)8,16,10 B)10,10,10 C)8,8,10 D)8,10,10
45. 下面程序段的输出结果是:B
int a=5, b=4, c=3, d=2;
if(a>b>c)
printf(“%d/n”,d);
else if((c-1>=d)==1)
printf(“%d/n”, d+1);
else
printf(“%d/n”, d+1);
A) 2 B) 3 C) 4 D)编译错误
46.有如下程序段,请问k的值是:D
enum {a, b=5, c, d=4, e} k; k =c;
A) 3 B)4 C) 5 D) 6
47.有如下程序段:
int i, n = 0;
double x = 1, y1 = 2.1/1.9, y2 = 1.9/2.1;
for( i = 1; i<22; i++)
x = x*y1;
while( x!=1.0)
{
x =x*y2;
n++;
}
printf(“%d/n”, n);
请问执行结果是:A
A) 21 B) 22 C)无限循环 D)程序崩溃
48. 用树形结构表示实体之间联系的模型是C
A) 关系模型 B)网状模型 C)层次模型 D)以上三个都是
49.有如下程序段:
char fun(char *);
main()
{
char *s = “one”, a[5] = {0}, (*f1)(char *) = fun, ch;
}
则对函数fun的调用语句正确的是C
A) *f1(&a); B) f1(*s); C) f1(&ch) D) ch = *f1(s);要改成(*f1(s)才正确
50.有如下程序段:
int c = 23;
printf(“%d/n”, c&c);
请问执行结果是:C
A) 0 B) 46 C) 23 D)以上都不对

分享到:
评论

相关推荐

    迅雷笔试C++试题及解释

    迅雷作为一家知名的互联网技术公司,其笔试中涉及C++试题,旨在考察候选人的编程基础、算法理解和问题解决能力。以下是可能在迅雷笔试中出现的C++知识点: 1. **基本语法**:包括变量声明、数据类型(如int、float...

    历年自考c++试题答案及教学源码

    "历年自考C++试题答案"包含了过去几年的考试题目及其官方解答。这些试题通常涵盖了C++的基础语法、类与对象、继承、多态性、模板、异常处理、输入/输出流、容器和算法等多个方面。通过解决这些题目,考生可以熟悉...

    《C++试题》一个很好的c++试题咯

    【C++试题解析】 在C++编程语言的学习中,...通过解答这些试题,我们可以深入理解C++的基本语法、数据类型、运算符、控制结构以及程序设计的原则。这些知识点是学习C++的基础,对于成为一名熟练的C++程序员至关重要。

    迅雷c++笔试面试题

    7. **C++11及更新标准**:了解C++11及后续标准引入的新特性,如右值引用、lambda表达式、auto关键字、move语义、并发编程等,将使你在面试中更具竞争力。 8. **设计模式**:熟悉常见的设计模式(如单例、工厂、观察...

    自考C++试题及答案(9套合集)

    这份名为"自考C++试题及答案(9套合集)"的压缩包文件包含了丰富的学习资源,旨在帮助考生全面掌握C++编程语言的核心概念、语法结构以及编程技巧。以下是基于这个压缩包内容的详细知识点解析: 1. **C++基础概念**...

    C++试题大全

    《C++试题大全》这份资料包含了300道精心挑选的C++编程题目,旨在全方位地测试和提升学习者的C++编程技能。这份资源对于正在学习C++的初学者、准备面试的程序员或是想要深入理解C++语言特性的开发者来说,都是一份...

    C++试题及答案

    这份"C++试题及答案"资料,显然是一份帮助学习者检验和提升C++技能的宝贵资源。 首先,C++的基础知识点包括语法结构,如变量声明、数据类型(如int, float, char等)、运算符(赋值、算术、比较、逻辑等)、流程...

    易学C++及习题解答

    《易学C++及习题解答》是一本专为初学者设计的C++入门教程,其特点是语言通俗易懂,适合没有任何编程基础的学习者。C++作为一门强大的面向对象编程语言,广泛应用于软件开发、系统编程等多个领域。本书旨在帮助读者...

    计算机C++等级考试试题与解答

    计算机C++等级考试试题与解答,等级考试模拟试题与解答,包含基本概念选择题,以及程序填空,希望对参加等级考试的学生,有一些帮助

    C++Prime习题解答

    这份“C++Prime习题解答”压缩包文件很显然是为了帮助读者更好地理解和解决书中所提到的练习题目,以提升编程技能和理论理解。 在C++的学习过程中,实践是非常重要的部分。《C++ Primer Plus》中的习题设计得既有趣...

    NOIP2019 提高组初赛 CSP-S C++试题及答案.rar

    本压缩包中的"NOIP2019 提高组初赛 CSP-S C++试题及答案"文档,包含了2019年NOIP提高组初赛的C++编程题目和官方给出的标准解题方案。通过这些题目,考生可以了解比赛的题型,以及评价标准。每个题目通常会包含问题...

    C++试题及答案.doc

    C++试题及答案.doc

    c++模拟试题及答案

    内含6套C++面向对象程序设计模拟试题及答案,题型包括单项选择题、判断正误题、填空题、程序分析题、程序改错题

    c++转C#工具

    标题中的"C++转C#工具"指的是一个软件应用程序,它能帮助程序员将源代码从C++语言转换为C#语言。这种工具通常用于在已经拥有大量C++代码库的情况下,想要利用C#语言的优势,或者将项目迁移到.NET框架的情况。 C++是...

    历年自考C++试题

    通过这些试题,考生可以了解考试的出题趋势,熟悉题型,以及提高解答问题的能力。 C++试题主要涉及以下几个方面: 1. **基础语法**:包括变量声明、数据类型、运算符、流程控制(如if-else、switch-case、循环)、...

    基于C++的迅雷下载模块dll

    【基于C++的迅雷下载模块dll】是一个用于构建下载功能的动态链接库,它集成了迅雷先进的P2P技术,旨在帮助开发者在自己的应用程序中实现高效、快速的文件下载功能,同时减轻服务器的流量压力。迅雷作为国内知名的...

    c++试题试题嘿嘿 、、

    这可能意味着在解答C++试题时,应尝试多种方法,不断调试和完善,直到找到最佳解决方案。 至于压缩包子文件的文件名称列表,它们显然与C++试题无关,它们看起来是关于Dota游戏的资源和链接。因此,这些文件对C++...

    NOIP2006-2017普及组初赛c++版试题+答案

    《C++ NOIP普及组初赛历年试题及答案解析》 C++,作为一种高效、强大的编程语言,广泛应用于各类竞赛编程,特别是在全国奥林匹克信息学竞赛(NOIP)中,C++是参赛者首选的语言之一。普及组是NOIP比赛的重要组成部分...

    C++代码转java工具

    标题“C++代码转Java工具”暗示了一个软件或服务的存在,它的功能是自动化C++源代码到Java源代码的转换。这种工具通常通过分析C++的语法结构,然后生成相应的Java代码来工作。然而,需要注意的是,由于C++和Java的...

    50道C++编程练习题及解答.doc

    C++的常见习题,适合初步学习,巩固基础,复习提升。每道题目都有对应的答案,可以直接运行。适合用作C++的专项练习。内容可以参考我的博客。

Global site tag (gtag.js) - Google Analytics