迅雷2012春招+答案解析
1、微机中1K字节表示的二进制位数是()
A、1000 B、0X1000 C、1024 D、0X1024
2、设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为()
A、0--- 255 B、0--- 32767 C、0--- 65535 D、0--- 2147483647
3、在C语言中,要求运算数必须是整型的运算符是()
A、/ B、++ C、|= D、%
4、下面程序段的运行结果是()
- char c[5] = {'a','b','\0','c','\0'};
- printf("%s",c);
A、'a"b' B、ab C、ab_c D、ab_c_ (其中_表示空格)
5、下列关于数组的初始化正确的是()
A、 char str[2] = {"a","b"}
B、 char str[2][3] = {"a","b"}
C、 char str[2][3] = {{'a','b'},{'e','f'},{'g','h'}}
D、 char str[] = {"a","b"}
6、判断字符串a和b是否相等,应当使用()
A、if(a==b) B、if(a=b) C、if(strcpy(a,b))
D、if(strcmp(a,b))
7、一直inta[3][4];则下列能表示a[1][2]元素值的是()
A、*(*(a+1)+2) B、*(a+1+2) C、(&a[0]+1)[2]
D、*(a[0]+1)
8、若希望当A的值为奇数时,表达式的值为真,A的值为偶数时,表达式的值为假,则以下不能满足要求的表达式是()
A、A%2==1 B、!(A%2==0) C、!(A%2) D、A%2
9、以下哪项可以用来释放 p = malloc() 分配的内存()
A、free(p) B、delete p C、delete []p D、sizeof p
10、下列有关静态成员函数的描述中,正确的是()
A、静态数据成员可以再类体内初始化
B、静态数据成员不可以被类对象调用
C、静态数据成员不受private控制符作用
D、静态数据成员可以直接用类名调用
11、按e1、e2、e3、e4的次序进栈(中间可能有出栈操作,例如e1进栈后出栈,e2再进栈),则可能的出栈序列是()
A、e3、e1、e4、e2 B、e2、e4、e3、e1 C、e3、e4、e1、e2 D、任意序列
12、某二叉树结点的中序序列为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E,该二叉树对应的树林包括多少棵树()
A、1 B、2 C、3 D、4
13、单链表的每个结点包括一个指针link,它指向该结点的后继结点,现要将指针q指向的新结点插入到指针p指向的单链表结点之后,下面的操作序列中哪一个是正确的?
A、q = p->link;
p->link = q->link
B、p->link
= q->link; q = p->link
C、q->link
= p->link; p->link = q
D、p->link
= q; q->link = p->link;
14、函数原型void fun(int
a,int b=5,char c='*');下面的调用中不合法的是()
A、fun(4,1) B、fun(99) C、fun(11,2,'a') D、fun(15,'*')
15、以下叙述中不正确的是()
A、在不同的函数中可以使用相同名字的变量
B、函数中的形式参数是局部变量
C、在一个函数内定义的变量只在本函数范围内有效
D、在一个函数内的复合语句中定义的变量在本函数范围内有效(只在复合语句中有效)
16、设有一下宏定义:
#define N 3
#define Y(n) ((N+1)*n)
则执行语句:z=2*(N+Y(5+1))后的z值为()
A、38 B、42 C、48 D、54
17、以下程序程序的运行结果是()
- int main(void)
- {
- char a[]={"programming"},b[]={"language"};
- char *p1,*p2;
- int i;
- p1=a,p2=b;
- for(i=0;i<7;i++)
- {
- if(*(p1+i)==*(p2+i))
- printf("%c",*(p1+i));
- }
- return 0;
- }
A、gm B、rg C、or D、ga
18、若有以下程序段:
- int a[]={4,0,2,3,1},i,j,t;
- for(i=1;i<5;i++)
- {
- t=a[i];
- j=i-1;
- while(j>=0 && t>a[j])
- {
- a[j+1]=a[j];
- j--;
- }
- a[j+1]=t;
- }
A、对数组a进行插入排序(升序)
B、对数组a进行插入排序(降序)
C、对数组a进行选择排序(升序)
D、对数组a进行选择排序(降序)
19、以下程序的输出结果是()
- #define P 3
- int F(int x)
- {
- return (P*x*x);
- }
- void main()
- {
- printf("%d\n",F(3+5));
- }
A、49
B、192
C、29
D、77
20、以下代码中,A的构造函数和析构函数分别执行了几次()
A *pa = new
A[10];
delete []pa;
A、1、1 B、10、10 C、1、10 D、10、1
21、在顺序表{3、6、8、10、12、15、16、18、21、25、30}中,用二分法查找关键码值11,所需的关键码比较次数是()
A、2 B、3 C、4 D、5
22、若int占2个字节,char 占1个字节,float占4个字节,sizeof(xc)的大小是()
- struct stu
- {
- union
- {
- char b[5];
- int bh[2];
- }class;
- char xm[8];
- float cj;
- }xc;
A、16 B、18 C、20 D、22
23、设二叉树根结点的层次为0,一棵深度(高度)为k的满二叉树和同样深度的完全二叉树各有f个结点和c个结点,下列关系式不正确的是()
A、f >= c B、c > f C、f=2^k+1 D、c>2k-1
24、关于引用和指针的区别,下列叙述错误的是()
A、引用必须初始化,指针不必
B、指针初始化以后不能被改变,引用可以改变所指的对象
C、删除空指针是无害的,不能删除引用
D、不存在指向空值的引用,但是存在指向空值的指针
25、属于网络层协议的是()
A、IP B、TCP C、ICMP D、X.25
26、STL中的哪种结构在增加成员时可能会引起原有数据成员的存储位置发生变动()
A、map B、set C、list D、vector
27、windows消息调度机制是()
A、指令队列 B、指令堆栈 C、消息队列 D、消息堆栈
28、在排序方法中,关键码比较次数和记录的初始排列无关的是()
A、Shell排序 B、归并排序 C、直接插入排序 D、选择排序
29、假设A为抽象类,下列声明()是正确的
A、A fun(int ); B、A *p; C、int fun(A) D、A Obj;
30、如果类的定义如下,则以下代码正确并且是良好编程风格的是()
A、std::auto_ptr<Object> pObj(new Object);
B、std::vector<std::auto_ptr<Object*>> object_vector;
C、std::auto_ptr<Object*> pObj(new Object);
D、std::vector<std::auto_ptr<Object>> object_vector;
二、填空题
1、写出float x 与零值比较的if语句。
2、在32位系统中,char str[]="xuelei"; char *p = str; sizeof(str)=() ,sizeof(p)=() ,sizeof(*p)=()
3、Internet物理地址和IP地址转换采用什么协议?
4、char a[2][2][3] = {{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}}};
for(int i = 0;i<12;i++)
printf("%d", );
在空格处填上合适的语句,顺序打印出a中的数字。
5、以下函数查找一个整数数组中第二大的数,请填空。
- const int MINNUMBER = -32767;
- int find_sec_max(int data[],int count)
- {
- int maxnumber = data[0];
- int sec_max = MINNUMBER;
- for(int i = 1;i < count; i++)
- {
- if(data[i] > maxnumber)
- {
- }
- else
- {
- if(data[i] > sec_max)
- }
- }
- return sec_max;
- }
6、下面程序可从1....n中随机输出m个不重复的数,请填空。
- knuth(int n,int m)
- {
- srand((unsigned)time(NULL));
- for(int i = 0;i < n;i++)
- {
- if(_________)
- {
- cout<<i<<"\n";
- ______________
- }
- }
- }
7、以下prim函数的功能是分解质因数,请填空。
- void prim(int m,int n)
- {
- if(m>n)
- {
- while(_________) n++;
- ______________;
- prim(m,n);
- cout<<n<<endl;
- }
- }
- void main()
- {
- int n = 435234;
- prim(n,2);
- }
8、程序改错。
- int fun(vector<int>& val)
- {
- copy(val.begin() , val.end() , ostream_iterator<int>(cout,"\n"));
- ......
- }
- void main()
- {
- int a[5] = {1,2,3,4,5};
- vector<int> v;
- copy(a , a + 5 , v.begin());
- fun(vector<int>(v));
- prim(n,2);
- }
9、C++中const有什么用途(至少说出三种):
10、下面程序的功能是输出数组的全排列,请填空。
- void perm(int list[],int k,int m)
- {
- if(_______)
- {
- copy(list,list+m,ostream_iterator<int>(cout," "));
- cout<<endl;
- return ;
- }
- for(int i = k ; i <= m ; ++i)
- {
- swap(&list[k] , &list[i]);
- ______________;
- swap(&list[k] , &list[i]);
- }
- }
- void main()
- {
- int list[] = {1,2,3,4,5};
- perm(list,0,sizeof(list)/sizeof(int)-1);
- }
参考答案(欢迎讨论)转载请注明来源http://www.cnblogs.com/jerry19880126/
选择:
- A。网友给的答案,我不知道“二进制位数”是什么意思。
- C。0至2^16-1。
- D。
- B。字符串输出遇’\0’终止。
- B。A中应是单引号,C的维数反了,D和A错的一样。
- D。A比较的是首地址而不是内容。
- A。B是a[3]地址,C是越界了,D是a[0][1]。
- C。
- A。B和C是针对new的。注意C中的malloc和free是一对,C++中的new和delete是一对。
- D。静态成员是类的,只有一份,被每个对象共享。
- B。类似于微软实习生的考题。
- B。先画出这个二叉树的结构,根是E,左孩子是A,A只有右孩子C,C的左孩子是B,右孩子是D,E的右孩子是G,G的左孩子是F。再将之转成树林。转换方法:断开根结点与右孩子的连线,以及右孩子与右孩子的连线……,得到若干棵根结点无右孩子的二叉树。这里断开后可以得到两棵树。
- C。
- D。缺省值不可跳跃。
- C or D。网友给的答案是C,但我觉得是D。
- C。
- D。
- B。跟着程序走几步就知道了。
- B。与宏不一样,形参传递时是先算出来的。
- B。
- B。比较发生在15,8,10和12的位置上。
- C。union是取其中最大的字节,即char b[5]的5字节,但需要2字节的对齐(struct和union都有字节对齐的问题),所以union占了6字节,外面看struct的对齐数,最大的是float的4字节,所以按四字节对齐,这样union补齐成8字节(4的倍数),8+8+4=20字节。
- A。A和B是矛盾的,所以答案就在A、B里选,满二叉树一定是完全二叉树,满结点个数>=完全二叉树,故选B。
- B。
- A。B是传输层的(还有UDP协议),C其实也是网络层的(所以如果是多选题C也可以选),D是物理层的。
- D。vector是用动态数组实现的,当容量不够时会扩容,导致存储位置变化,其他是用链表实现的,所以不会出现扩容的问题。
- C。是队列而不是栈,应该是先来先服务。
- D。选择排序都是要遍历一遍的。
- B。抽象类不能有对象,若在A和C选项中的A后面加上&就是对的。
- A。(网友没有给答案,我觉得是A,可以自行百度一下)。
填空:
- if( fabs(x) < 0.0000001)。
- 7, 4, 1 见腾讯笔试的解释。
- 物理地址转IP地址用RARP协议(Reverse Address Resolution Protocal)。反之用ARP协议。
- a[i/6][i/3%2][i%3]。
- 第一个if下面:sec_max=max_number; maxnumber=data[i]; 第二个if下面:sec_max=data[i]。
- 第一个空: rand()%(n-i)<m 第二个空:--m。
- 第一个空: m%n!=0; 第二个空: m/=n。
- 第11行,改成fun(v)。
- 防止变量被修改,防止指针指向被修改,防止类成员被修改。
- 第一空k>m,第二空perm(list, k+1, m),具体见百度笔试题的最后一题。