华为 社招 C语言笔试,华为笔试C语言笔试题之3

《华为笔试C语言笔试题之3》由会员分享,可在线阅读,更多相关《华为笔试C语言笔试题之3(10页珍藏版)》请在人人文库网上搜索。

1、C 语言笔试题之34. static 有什么用途?(请至少说明两种)1. 限制变量的作用域2. 设置变量的存储域7. 引用与指针有什么区别?1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。2) 不存在指向空值的引用,但是存在指向空值的指针。8. 描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性9. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈10. 什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于111. 堆栈溢出一般是由什么原因导致的?没有回收垃圾资源12。

2、. 什么函数不能声明为虚函数?constructor13. 冒泡排序算法的时间复杂度是什么?14. 写出 float x 与“零值”比较的 if 语句。if(x0.000001&xmain()int a,b,c,d;a=10;b=a+;c=+a;d=10*a+;printf(b,c,d:%d,%d,%d, b,c,d) ;return 0;答: 10, 12, 1201、static全局 量与普通的全局 量有什么区 ?static局部 量和普通局部 量有什么区 ?static函数与普通函数有什么区 ?全局 量 ( 外部 量 ) 的 明之前再冠以static就构成了静 的全局 量。全局 量本身就。

3、是静 存方式,静 全局 量当然也是静 存 方式。 两者在存 方式上并无不同。 两者的区 在于非静 全局 量的作用域是整个源程序, 当一个源程序由多个源文件 成 ,非静 的全局 量在各个源文件中都是有效的。 而静 全局 量 限制了其作用域, 即只在定 量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静 全局 量的作用域局限于一个源文件内,只能 源文件内的函数公用, 因此可以避免在其它源文件中引起 。从以上分析可以看出,把局部 量改 静 量后是改 了它的存 方式即改 了它的生存期。把全局 量改 静 量后是改 了它的作用域,限制了它的使用范 。static函数与普通函数作用域不同。 在。

4、本文件。只在当前源文件中使用的函数 明 内部函数 (static) ,内部函数 在当前源文件中 明和定 。 于可在当前源文件以外使用的函数, 在一个 文件中 明,要使用 些函数的源文件要包含 个 文件static 全局 量与普通的全局 量有什么区 : static 全局 量只初使化一次,防止在其他文件 元中被引用 ;static 局部 量和普通局部 量有什么区 : static 局部 量只被初始化一次,下一次依据上一次 果 ;static 函数与普通函数有什么区别: static 函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝2、程序的局部变量存在于(堆栈)中,全局变量存在于(静态区。

5、)中,动态申请数据存在于(堆)中。3、设有以下说明和定义:typedef union long i; int k5; char c; DATE;struct data int cat; DATE cow; double dog; too;DATE max;则语句 printf(%d,sizeof(struct date)+sizeof(max);的执行结果是: ___52____答:DATE是一个 union,变量公用空间 .里面最大的变量类型是int5,占用 20 个字节 .所以它的大小是 20data 是一个 struct,每个变量分开占用空间.依次为 int4 + DATE20 + do。

6、uble8 = 32.所以结果是 20 + 32 = 52.当然 .在某些 16 位编辑器下 , int可能是 2 字节 , 那么结果是int2 + DATE10 + double8 = 204、队列和栈有什么区别?队列先进先出,栈后进先出5、写出下列代码的输出内容#includeint inc(int a)return(+a);int multi(int*a,int*b,int*c)return(*c=*a*b);typedef int(FUNC1)(int in);typedef int(FUNC2) (int*,int*,int*);void show(FUNC2 fun,int arg。

7、1, int*arg2)INCp=&inc;int temp =p(arg1);fun(&temp,&arg1, arg2);printf(%dn,*arg2);main()int a;show(multi,10,&a);return 0;答: 1107、请找出下面代码中的所以错误说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”1、#includestring.h2、main()3、4、 char*src=hello,world;5、 char* dest=NULL;6、 int len=strlen(src);7、 dest=(char*)malloc(len);8、 。

8、char* d=dest;9、 char* s=srclen;10、 while(len-!=0)11、 d+=s-;12、 printf(%s,dest);13、 return 0;14、答:方法 1:int main()char* src = hello,world;int len = strlen(src);char* dest = (char*)malloc(len+1);/要为 0char* d = dest;char* s = &srclen-1;/指向最后一个字符while( len- != 0 )*d+=*s-;分配一个空间*d = 0;/尾部要加 0printf(%sn,de。

9、st);free(dest);/使用完,应当释放空间,以免造成内存汇泄露return 0;方法 2:#include #include main()char str=hello,world;int len=strlen(str);char t;for(int i=0; i#include int main(void)long l;char *str = 98765432;l = atol(lstr);printf(string = %s integer = %ldn, str, l);return(0);2. 对于一个频繁使用的短小函数 , 在 C语言中应用什么实现 , 在 C+中应用什么实现。

10、 ? c 用宏定义, c+用 inline3. 直接链接两个信令点的一组链路称作什么 ?PPP点到点连接4. 接入网用的是什么接口 ?5.voip都用了那些协议 ?6. 软件测试都有那些种类 ?黑盒:针对系统功能的测试白合:测试函数功能,各函数接口7. 确定模块的功能和模块的接口是在软件设计的那个队段完成的?概要设计阶段8.enum stringx1,x2,x3=10,x4,x5,x;问 x= 0x801005 , 0x8010f4;9.unsigned char *p1;unsigned long *p2;p1=(unsigned char *)0x801000;p2=(unsigned l。

11、ong *)0x810000;请问 p1+5=;p2+5=;三. 选择题 :1.Ethternet链接到 Internet用到以下那个协议 ?A.HDLC;B.ARP;C.UDP;D.TCP;E.ID2. 属于网络层协议的是 : A.TCP;B.IP;C.ICMP;D.X.253.Windows 消息调度机制是 :A. 指令队列 ;B. 指令堆栈 ;C. 消息队列 ;D. 消息堆栈 ;4.unsigned short hash(unsigned short key)return (key)%256请问 hash(16),hash(256)的值分别是 :A.1.16;B.8.32;C.4.16;。

12、D.1.32四 . 找错题 :1. 请问下面程序有什么错误 ? int a602501000,i,j,k; for(k=0;kMax_GT_Length)return GT_Length_ERROR;.五. 问答题 :1.IP Phone的原理是什么 ?IPV62.TCP/IP通信建立的过程怎样,端口有什么作用?三次握手,确定是哪个应用程序使用该协议3.1号信令和 7 号信令有什么区别,我国某前广泛使用的是那一种?4. 列举 5 种以上的电话新业务?6、已知一个单向链表的头,请写出删除其某一个结点的算法,要求,先找到此结点,然后删除。slnodetype *Delete(slnodetype 。

13、*Head,int key)中 if(Head-number=key)Head=Pointer-next;free(Pointer);break;Back = Pointer;Pointer=Pointer-next;if(Pointer-number=key)Back-next=Pointer-next;free(Pointer);break;void delete(Node* p)if(Head = Node)while(p)有一个 16 位的整数,每4 位为一个数,写函数求他们的和。解释:整数 11111和 1101+0101+1011+0111感觉应该不难,当时对题理解的不是很清楚,所。

14、以写了一个函数,也不知道对不对。疑问:既然是 16 位的整数, 11111 是 2 进制的,那么函数参数怎么定义呢,请大虾指教。答案:用十进制做参数,计算时按二进制考虑。/* n就是 16 位的数,函数返回它的四个部分之和*/char SumOfQuaters(unsigned short n)char c = 0;int i = 4;doc += n & 15;n = n 4; while (-i); return c;有 1,2,.一直到 n 的无序数组 , 求排序算法 , 并且要求时间复杂度为O(n), 空间复杂度 O(1), 使用交换 , 而且一次只能交换两个数 . #includei。

15、nt main()int a= 10,6,9,5,2,8,4,7,1,3;int len = sizeof(a) / sizeof(int);int temp;for(int i = 0; i next;while(q!=NULL)r=q-next;q-next=p;p=q;q=r;head-next=NULL;head=p;return head;2 写出程序删除链表中的所有接点void del_all(node *head)node *p;while(head!=NULL)p=head-next;free(head);head=p;cout 释放空间成功 !endl;3 两个字符串, s,。

16、t; 把 t 字符串插入到 s 字符串中, s 字符串有足够的空间存放 t 字符串 void insert(char *s, char *t, int i)char *q = t;char *p =s;if(q = NULL)return;while(*p!=0)p+;while(*q!=0)*p=*q;p+;q+;*p = 0;分析下面的代码:char *a = hello;char *b = hello;if(a= =b)printf(YES);elseprintf(NO);我选输出 no( 对比的应该是指针地址吧), 可在 VC是 YES 在 C 是 NOlz 的呢,是一个常量字符串。位于静态存储区,它在程序生命期内恒定不变。如果编译器优化的话,会有可能 a 和 b 同时指向同一个 hello 的。则地址相同。如果编译器没有优化,那么就是两个不同的地址,则不同。

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值