华为笔试总结done

上传人:第*** 文档编号:121997294 上传时间:2020-02-28 格式:DOC 页数:12 大小:50KB
返回 下载 相关 举报
华为笔试总结done_第1页
第1页 / 共12页
华为笔试总结done_第2页
第2页 / 共12页
华为笔试总结done_第3页
第3页 / 共12页
华为笔试总结done_第4页
第4页 / 共12页
华为笔试总结done_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《华为笔试总结done》由会员分享,可在线阅读,更多相关《华为笔试总结done(12页珍藏版)》请在金锄头文库上搜索。

1、1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别? 1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。3.描述实时系统的基本特性在特定时间内完成特定的

2、任务,实时性与可靠性。4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 全局变量储存在静态数据库,局部变量在堆栈。静态全局变量是位于数据段并且在程序开始运行的时候被加。程序的动态的局部变量则分配在堆栈里面。5.什么是平衡二叉树? 左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1。6.堆栈溢出一般是由什么原因导致的? 没有回收垃圾资源。7.什么函数不能声明为虚函数? Constructor(构造函数)函数不能声明为虚函数。8.冒泡排序算法的时间复杂度是什么? 时间复杂度是O(n2)。9.写出float x 与“零值”比较的if语句。 if(x0.000001&x-0.0

3、00001)10.Internet采用哪种网络协议?该协议的主要层次结构? Tcp/Ip协议 主要层次结构为: 应用层/传输层/网络层/数据链路层/物理层。11.Internet物理地址和IP地址转换采用什么协议? ARP (Address Resolution Protocol)(地址解析協議),实现通过IP地址得知其物理地址(MAC地址)。12.IP地址的编码分为哪俩部分? IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。 循环链表#in

4、clude #include #include #define NULL 0 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; typedef int Elemtype;/*定义数据元素类型 */ typedef struct Cnode Elemtype data; struct Cnode *next; CNode; CNode *joseph;/*定义一个全局变量 */ Status Create_clist(CNode *clist,int n) CNode *p,*q; int i; clist=

5、NULL; for(i=n;i=1;i-) p=(CNode *)malloc(sizeof(CNode); if(p=NULL) return OVERFLOW; /*存储分配失败 */ p- data=i; p- next=clist; clist=p; if(i=n) q=p;/*用q指向链表最后一个结点 */ q- next=clist; /*把链表的最后一个结点的链域指向链表的第一个结点,构成循环链表 */ joseph=clist; /*把创建好的循环链表头指针赋给全局变量 */ return OK; /*end */ Status Joseph(CNode *clist,int

6、m,int n,int k) int i; CNode *p,*q; if(m n) return ERROR;/*起始位置错 */ if(!Create_clist(clist,n) return ERROR; /*循环链表创建失败 */ p=joseph; /*p指向创建好的循环链表 */ for(i=1;i next; /*p指向位置的结点 */ while(p) for(i=1;i next; /* 找出第k个结点 */ q=p- next; printf( %d ,q- data);/*输出应出列的结点 */ if(p- next=p) p=NULL; /*删除最后一个结点 */ e

7、lse p- next=q- next; p=p- next; free(q); /*while */clist=NULL; /* end */ int main() int m,n,k,i; CNode *clist; clist=NULL;/*初始化clist */ printf( n请输入围坐在圆桌周围的人数n:); cinn;printf( n请输入第一次开始报数人的位置m: ); cinm;printf( n你希望报数到第几个数的人出列? ); cink; Create_clist(clist,n);/*创建一个有n个结点的循环链表clist */ printf( n出列的顺序如下?

8、: n ); Joseph(clist,m,n,k); cin.get();return 0 ; /*main */ 14.不能做switch()的参数类型是: switch的参数不能为实型(实数或浮点数)。15.上海华为的一道关于指针方面的编程题:int AnSize,其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)#include#define nsize 18using namespa

9、ce std;int Func(int* A, int nSize)int i,k,t=1,flag=0;for(i=0;inSize-1;i+)if(Ai=0&flag=0)k=i;/记录第一个零的下标flag=1;if(Ai=0&Ai+1!=0)Ai+1-t=Ai+1;Ai+1=0;else if(Ai=0&Ai+1=0)t+;/记录0的个数return k;int main() int ansize=1,2,3,4,0,5,7,0,7,5;coutFunc(a,nsize)endl;for(int i=0;insize;i+)coutai ;cin.get();return 0 ; 16

10、.写一个程序, 要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。如:100个1是一个组合,5个1加19个5是一个组合。 请用C+语言写。答案:最容易想到的算法是:设x是1的个数,y是2的个数,z是5的个数,number是组合数,注意到0=x=100,0=y=50,0=z=20,所以可以编程为:number=0;for (x=0; x=100; x+)for (y=0; y=50; y+)for (z=0; z=20; z+)if (x+2*y+5*z)=100)number+;coutnumberendl;上面这个程序一共要循环100*50*20次,效率实在是太低了。事实

11、上,这个题目是一道明显的数学问题,而不是单纯的编程问题。我的解法如下:因为x+2y+5z=100,所以x+2y=100-5z,且z=20 x=100 y=50,所以(x+2y)=100,且(x+5z)是偶数,对z作循环,求x的可能值如下:z=0, x=100, 98, 96, . 0z=1, x=95, 93, ., 1z=2, x=90, 88, ., 0z=3, x=85, 83, ., 1z=4, x=80, 78, ., 0.z=19, x=5, 3, 1z=20, x=0因此,组合总数为100以内的偶数+95以内的奇数+90以内的偶数+.+5以内的奇数+1,即为: (51+48)+(

12、46+43)+(41+38)+(36+33)+(31+28)+(26+23)+(21+18)+(16+13)+(11+8)+(6+3)+1,某个偶数m以内的偶数个数(包括0)可以表示为m/2+1=(m+2)/2,某个奇数m以内的奇数个数也可以表示为(m+2)/2,所以,求总的组合次数可以编程为:number=0;for (int m=0;m=100;m+=5)number+=(m+2)/2;coutnumberendl;这个程序,只需要循环21次, 两个变量,就可以得到答案,比上面的那个程序高效了许多倍-只是因为作了一些简单的数学分析,这再一次证明了:计算机程序=数据结构+算法,而且算法是程序的灵魂,对任何工程问题,当用软件来实现时,必须选取满足当前的资源限制,用户需求限制,开发时间限制等种种限制条件下的最优算法。而绝不能一拿到手,就立刻用最容易想到的算法编出一个程序了事这不是一个专业的研发人员的行为。那么,那种最容易想到的算法就完全没有用吗?不,这种算法正好可以用来验证新算法的正确性,在调试阶段,这非常有用。在很多大公司,例如微软,都采用了这种方法:在调试阶段,对一些重要的需要好的算法来实现的程序,而这种好的算法又比较复杂时

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号