您的位置:首页 > 其它

中兴2011笔试题+答案解析

2014-10-28 13:13 309 查看


中兴2011笔试题+答案解析





















参考答案(大部分答案和都和卷子上给的相同,欢迎讨论)转载请注明来源http://www.cnblogs.com/jerry19880126/
一、单选题

B。p2是int型,只有p1是int*型。
C。区分0和\0。
C。
B。除号与取余的优先级是一样的,所以顺序是从左向右。快速与(逻辑与)只要不是0的都认为是true(1),是0则认为是false(0)。
重复。
重复。
A。字符串常量不可更改。
重复。
C。可以用排除法。
D。
C or D。没查到,C6000是指DSP吗?如果是32位PC机上,D是错的,因为long还是4字节。但本科做过单片机知道,int是2字节的,所以C是错的。这里貌似是硬件环境,所以选C还是保稳些。
C。只要有一个被显式初始化了,数组中其他元素也会被初始为0。
B。百度一下就知道了。
B。注意while里面的==误写成=了。
B。
B。我觉得是D,百度上没有找到确切的。
A。应该是A,我百度到了。
C。
A。
B。语句覆盖是最弱的,其次是条件覆盖,再次是条件及判定覆盖,最强的是条件组合覆盖。

二、多选题

ABD。
ABCD。形参、实参不一致时,会有默认的转换,若不能转换,则编译器报错。
ACD。
ACD。A只有是字符串数组时,才可以整体输出。B编译器没那么聪明,不知道是下标越界,报的只是读冲突错。C可以的。D是对的,数组名为地址常量。
ABD。D是左移运算符,也是位操作。
BCD。C和D都可以访问。
后面题目是软件测试、linux的,请自行百度确认答案。第16题好像有问题,信号量是进程互斥用的,信号才是用来通信的。

三、判断题

错。
对。
对。
对。
重复。
重复。
对。
错。
错。不是没有结果,而是垃圾值。
对。

四、问答题

static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝,且static函数只能使用static变量。
(1)和(2)是一样的,为指向常量的指针,(3)是指针常量。
ZTE 垃圾值 DB。字符串常量存储于字符串常量区,在整个程序运行完毕后才释放。
程序代码在代码段,常量分为字符串常量和其他常量,字符串常量存储于字符串常量区,其他常量存储于代码段,局部变量存储于栈上,全局变量(包括静态变量)存储于全局数据区。

五、如下。
1. 链表反序



1 #include <iostream>
2 using namespace std;
3 //链表反序
4 struct node
5 {
6     struct node *next;
7     int data;
8 };
9
10
11 struct node* Reverse(struct node *p)
12 {
13     node *p1, *p2;
14     if(!p) return 0;
15     p1 = p->next;
16     if(!p1) return p;
17     p2 = p1->next;
18     p->next = 0;
19     while(true)
20     {
21         p1->next = p;
22         p = p1;
23         p1 = p2;
24         if(!p2) break;
25         p2 = p2->next;
26     }
27     return p;
28 }
29
30 void output(struct node *p)
31 {
32     while(p)
33     {
34         cout << p->data << " ";
35         p = p->next;
36     }
37     cout << endl;
38 }
39
40
41 int main()
42 {
43     //添加链表
44     node *head, *p;
45     head = new node();
46     head->data = 0;
47     p = head;
48     for(int i = 1; i < 5; ++i)
49     {
50         p->next = new node();
51         p = p->next;
52         p->data = i;
53     }
54     p->next = 0;
55     output(head);
56     head = Reverse(head);
57     output(head);
58 }


2. 双向链表



1 #include <iostream>
2 using namespace std;
3 //删除两个链表中的重复数据
4 typedef struct node
5 {
6     int data;
7     struct node *front, *next;
8 }Node;
9
10
11 void output(Node *head)
12 {
13     Node *p = head;
14     while(p->next != head)
15     {
16         p = p->next;
17         cout << p->data << " ";
18     }
19     cout << endl;
20 }
21
22 //构造一个双链表
23 Node* createLink(int* a, int len)
24 {
25     Node *pHeadA = new Node;
26     Node *p;
27     pHeadA->data = 0xffffffff;
28     pHeadA->next = pHeadA;
29     pHeadA->front = pHeadA;
30     p = pHeadA;
31     for(int i = 0; i < len; ++i)
32     {
33         Node *p1 = new Node;
34         p1->data = a[i];
35         p->next = p1;
36         p1->front = p;
37         pHeadA->front = p1;
38         p1->next = pHeadA;
39         p = p1;
40     }
41     return pHeadA;
42 }
43
44 //删除指定的结点
45 Node* removeNode(Node* p)
46 {
47     Node *pPrevious = p->front;
48     Node *pNext = p->next;
49     pPrevious->next = pNext;
50     pNext->front = pPrevious;
51     delete p;
52     return pPrevious;
53 }
54
55 //找到要删除的结点
56 bool findRemoveNode(Node* head, int data)
57 {
58     Node *p = head;
59     bool flag = false;
60     while(p->next != head)
61     {
62         p = p->next;
63         if(p->data == data)
64         {
65             p = removeNode(p);
66             flag = true;
67         }
68     }
69     return flag;
70 }
71
72 //删除重复结点
73 void DeleteSameNodes(Node* pHeadA, node* pHeadB)
74 {
75     Node *pA = pHeadA;
76     Node *pAPre;
77     while(pA->next != pHeadA)
78     {
79         pAPre = pA;
80         pA = pA->next;
81         int Adata = pA->data;
82         int flag = findRemoveNode(pHeadB, Adata);
83         if(flag)
84         {
85             //在B中重复的结点,那么A中的结点也要都删去
86             findRemoveNode(pHeadA, Adata);//注意会引起A中pA失效
87             pA =  pAPre;//重定位指针
88         }
89     }
90 }
91
92 int main()
93 {
94     cout << "删除前:"<<endl;
95     //创建A链表
96     int a[6] = {1,2,3,2,4,3};
97     Node* pHeadA = createLink(a, 6);
98     cout << "A链表中的元素为:";
99     output(pHeadA);
100
101     //创建B链表
102     int b[4] = {0,2,4,2};
103     Node* pHeadB = createLink(b, 4);
104     cout << "B链表中的元素为:";
105     output(pHeadB);
106
107     //删除两个链表中重复的值,题意不是很清楚,这里理解为若B中与A有相同的元素data,
108     //则A与B中所有含data的结点都要删去,而若B中没有相同的data,那么即使A内部有多
109     //个data,也不删除。
110     cout <<endl<< "删除后:"<< endl;
111     DeleteSameNodes(pHeadA, pHeadB);
112     cout << "A链表中的元素为:";
113     output(pHeadA);
114     cout << "B链表中的元素为:";
115     output(pHeadB);
116     return 0;
117 }


转自:/article/5198787.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: