中兴2011笔试题+答案解析

来源:互联网 发布:win10没有解压缩软件 编辑:程序博客网 时间:2024/05/11 00:17

中兴2011笔试题+答案解析

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

一、单选题

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

 

二、多选题

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

 

三、判断题

  1. 错。
  2. 对。
  3. 对。
  4. 对。
  5. 重复。
  6. 重复。
  7. 对。
  8. 错。
  9. 错。不是没有结果,而是垃圾值。
  10. 对。

 

四、问答题

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

 

五、如下。

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 }
复制代码
转自:http://www.cnblogs.com/jerry19880126/archive/2012/08/05/2623988.html
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 无法连线到服务器1~1怎么办? 数控车床车角度不亮怎么办 超市存包柜的票不见了怎么办 交货期来不及导致船期延误怎么办 跑1000米中途累怎么办 手指被机器压烂怎么办 机械手不能回归原点该怎么办 前缘送纸纸板翘怎么办 三菱AL 1R.2报警怎么办 工作好但领导不好伺候怎么办 孕妇憋尿憋的小腹疼怎么办 怀孕憋尿憋的小腹疼怎么办 半夜憋尿憋的小腹疼怎么办 新生儿大便次数较多怎么办 母猎生下三天没有奶怎么办 孩孑大便干不爱喝水怎么办 发那科1050报警怎么办 plc模块bf亮了怎么办 plc模块df亮了怎么办 西门子触摸屏进不了主画面怎么办 pos机显示白屏怎么办 洗衣机的门坏了怎么办 西门子洗衣机门坏了怎么办 拆线线断在肉里怎么办 总线绝对值编码器方向反了怎么办 台达伺服报警009怎么办 台达plc禁止上传怎么办? 潜水泵电机启动绕组断线了怎么办? 永磁电机磁没了怎么办 热水器热水管坏了怎么办 松下伺服驱动器坏了怎么办 步进电机功率小了怎么办 电三轮电机坏了怎么办 电动车钢圈撞变形了怎么办 电动车后轮钢圈变形了怎么办 软油管接头渗油怎么办 一只单眼皮一只双眼皮怎么办 儿童轻轻泥干了怎么办 5d轻轻泥干了怎么办 手机炉石一直闪退怎么办 鸟之羽任务失败怎么办