华为笔试Word文件下载.docx

上传人:b****5 文档编号:17329096 上传时间:2022-12-01 格式:DOCX 页数:17 大小:26.65KB
下载 相关 举报
华为笔试Word文件下载.docx_第1页
第1页 / 共17页
华为笔试Word文件下载.docx_第2页
第2页 / 共17页
华为笔试Word文件下载.docx_第3页
第3页 / 共17页
华为笔试Word文件下载.docx_第4页
第4页 / 共17页
华为笔试Word文件下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

华为笔试Word文件下载.docx

《华为笔试Word文件下载.docx》由会员分享,可在线阅读,更多相关《华为笔试Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。

华为笔试Word文件下载.docx

( 

2、int(*ptr)(),则ptr是一维数组的名字。

3、指针在任何情况下都可进行>

<

>

=,<

=,==运算。

4、switch(c)语句中c可以是int,long,char,float,unsignedint类型。

5、#defineprint(x) 

printf("theno,"#x",is")

二、填空题(共30分)

1、在windows下,写出运行结果,每空2分,共10分。

charstr[]="Hello";

char*p=str;

intn=10;

sizeof(str)=( 

sizeof(p)=( 

sizeof(n)=( 

voidfunc(charstr[100])

}

2、voidsetmemory(char**p,intnum)

{*p=(char*)malloc(num);

}

voidtest(void)

char*str=NULL;

getmemory(&

str,100);

strcpy(str,"hello");

printf(str);

运行test函数有什么结果?

)10分

3、设intarr[]={6,7,8,9,10};

int*ptr=arr;

*(ptr++)+=123;

printf("%d,%d",*ptr,*(++ptr));

)10分

二、编程题(第一小题20,第二小题30分)

1、 

不使用库函数,编写函数intstrcmp(char 

*source,char*dest)

相等返回0,不等返回-1;

2、 

写一函数intfun(char*p)判断一字符串是否为回文,是返回1,不是返回0,出错返回-1

ntarr[]={6,7,8,9,10};

int*ptr=arr;

*(ptr++)+=123;

请问输出是什么?

解答:

这道题的答案取自于编译器,因为不同的编译器有不同的压栈顺序,一般情况下是从右往左压,即答案为8,8。

但我们也不否认出现7,8或8,9的情况。

1.请你分别画出OSI的七层网络结构图和TCP/IP的五层结构图。

  2.请你详细地解释一下IP协议的定义,在哪个层上面?

主要有什么作用?

TCP与UDP呢?

  3.请问交换机和路由器各自的实现原理是什么?

分别在哪个层次上面实现的?

  4.请问C++的类和C里面的struct有什么区别?

  5.请讲一讲析构函数和虚函数的用法和作用。

  6.全局变量和局部变量有什么区别?

是怎么实现的?

操作系统和编译器是怎么知道的?

  7.8086是多少位的系统?

在数据总线上是怎么实现的?

找错

Voidtest1()

charstring[10];

[11]

char*str1="

0123456789"

;

strcpy(string,str1);

Voidtest2()

charstring[10],str1[10];

for(I=0;

I<

10;

I++) 

I未定义

{

str1[i]='

a'

I

运行有问题?

Voidtest3(char*str1)

if(strlen(str1)<

=10)

2. 

找错

#defineMAX_SRM256

DSNget_SRM_no()

staticintSRM_no;

intI;

I{

SRM_no%=MAX_SRM;

if(MY_SRM.state==IDLE)

break;

if(I>

=MAX_SRM)

return(NULL_SRM);

else

returnSRM_no;

3. 

写出程序运行结果

intsum(inta)

autointc=0;

staticintb=3;

c+=1;

b+=2;

return(a+b+C);

voidmain()

inta=2;

for(I=0;

I<

5;

I++)

printf("

%d,"

sum(a));

4. 

intfunc(inta)

intb;

switch(a)

case1:

30;

case2:

20;

case3:

16;

default:

0

returnb;

则func

(1)=?

5:

inta[3];

a[0]=0;

a[1]=1;

a[2]=2;

int*p,*q;

p=a;

q=&

a[2];

则a[q-p]=?

2

6.

定义int**a[3][4],则变量占有的内存空间为:

_____4

7.

编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。

如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。

1、一个学生的信息是:

姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起,给出一个age,在些链表中删除学生年龄等于age的学生信息。

#include"

stdio.h"

conio.h"

structstu{

charname[20];

charsex;

intno;

intage;

structstu*next;

}*linklist;

structstu*creatlist(intn)

inti;

//h为头结点,p为前一结点,s为当前结点

structstu*h,*p,*s;

h=(structstu*)malloc(sizeof(structstu));

h->

next=NULL;

p=h;

for(i=0;

i<

n;

i++)

s=(structstu*)malloc(sizeof(structstu));

p->

next=s;

Pleaseinputtheinformationofthestudent:

namesexnoage\n"

);

scanf("

%s%c%d%d"

s->

name,&

s->

sex,&

no,&

age);

s->

p=s;

Createsuccessful!

return(h);

voiddeletelist(structstu*s,inta)

structstu*p;

while(s->

age!

=a)

p=s;

s=s->

next;

if(s==NULL)

Therecordisnotexist."

p->

next=s->

Deletesuccessful!

voiddisplay(structstu*s)

while(s!

=NULL)

%s%c%d%d\n"

name,s->

sex,s->

no,s->

s=s->

intmain()

structstu*s;

intn,age;

Pleaseinputthelengthofseqlist:

\n"

scanf("

%d"

&

n);

s=creatlist(n);

display(s);

Pleaseinputtheage:

deletelist(s,age);

display(s);

return0;

2、实现一个函数,把一个字符串中的字符从小写转为大写。

voiduppers(char*s,char*us)

for(;

*s!

='

'

\0'

s++,us++)

if(*s>

&

*s<

z'

*us=*s-32;

else

*us=*s;

*us='

char*s,*us;

charss[20];

Pleaseinputastring:

%s"

ss);

s=ss;

uppers(s,us);

Theresultis:

\n%s\n"

us);

getch();

1.static有什么用途?

(请至少说明两种)

1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。

2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。

它是一个本地的全局变量。

3)在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。

那就是,这个函数被限制在声明它的模块的本地范围内使用

2.引用与指针有什么区别?

1)引用必须被初始化,指针不必。

2)引用初始化以后不能被改变,指针可以改变所指的对象。

3)不存在指向空值的引用,但是存在指向空值的指针。

3.描述实时系统的基本特性

在特定时间内完成特定的任务,实时性与可靠性。

4.全局变量和局部变量在内存中是否有区别?

如果有,是什么区别?

全局变量储存在静态数据库,局部变量在堆栈。

5.什么是平衡二叉树?

左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。

6.堆栈溢出一般是由什么原因导致的?

没有回收垃圾资源。

7.什么函数不能声明为虚函数?

constructor函数不能声明为虚函数。

8.冒泡排序算法的时间复杂度是什么?

时间复杂度是O(n^2)。

9.写出floatx与“零值”比较的if语句。

if(x>

0.000001&

x<

-0.000001)

10.Internet采用哪种网络协议?

该协议的主要层次结构?

Tcp/Ip协议

主要层次结构为:

应用层/传输层/网络层/数据链路层/物理层。

11.Internet物理地址和IP地址转换采用什么协议?

ARP(AddressResolutionProtocol)(地址解析協議)

12.IP地址的编码分为哪俩部分?

IP地址由两部分组成,网络号和主机号。

不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。

13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。

写出C程序。

循环链表,用取余操作做

14.不能做switch()的参数类型是:

switch的参数不能为实型。

1.写出判断ABCD四个表达式的是否正确,若正确,写出经过表达式中a的值(3分)

inta=4;

(A)a+=(a++);

(B)a+=(++a);

(C)(a++)+=a;

(D)(++a)+=(a++);

a=?

C错误,左侧不是一个有效变量,不能赋值,可改为(++a)+=a;

改后答案依次为9,10,10,11

2.某32位系统下,C++程序,请计算sizeof的值(5分).

charstr[]=“

char*p=str;

intn=10;

请计算

sizeof(str)=?

(1)

sizeof(p)=?

(2)

sizeof(n)=?

(3)

voidFoo(charstr[100]){

sizeof(str)=?

(4)

void*p=malloc(100);

(5)

(1)17

(2)4(3)4(4)4(5)4

3.回答下面的问题.(4分)

(1).头文件中的ifndef/define/endif干什么用?

预处理

防止头文件被重复引用

(2).#include和#include“filename.h”有什么区别?

前者用来包含开发环境提供的库头文件,后者用来包含自己编写的头文件。

(3).在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”声明?

函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern"

C"

修饰的变

量和函数是按照C语言方式编译和连接的。

由于编译后的名字不同,C++程序不能直接调

用C函数。

C++提供了一个C连接交换指定符号extern“C”来解决这个问题。

(4).switch()中不允许的数据类型是?

实型

4.回答下面的问题(6分)

(1).VoidGetMemory(char**p,intnum){

*p=(char*)malloc(num);

voidTest(void){

char*str=NULL;

GetMemory(&

str,100);

strcpy(str,"

hello"

printf(str);

请问运行Test函数会有什么样的结果?

输出“hello”

(2).voidTest(void){

char*str=(char*)malloc(100);

strcpy(str,“hello”);

free(str);

if(str!

=NULL){

strcpy(str,“world”);

输出“world”

(3).char*GetMemory(void){

charp[]="

helloworld"

returnp;

str=GetMemory();

无效的指针,输出不确定

5.编写strcat函数(6分)

已知strcat函数的原型是char*strcat(char*strDest,constchar*strSrc);

其中strDest是目的字符串,strSrc是源字符串。

(1)不调用C++/C的字符串库函数,请编写函数strcat

VC源码:

char*__cdeclstrcat(char*dst,constchar*src)

char*cp=dst;

while(*cp)

cp++;

/*findendofdst*/

while(*cp++=*src++);

/*Copysrctoendofdst*/

return(dst);

/*returndst*/

(2)strcat能把strSrc的内容连接到strDest,为什么还要char*类型的返回值?

方便赋值给其他变量

6.MFC中CString是类型安全类么?

不是,其它数据类型转换到CString可以使用CString的成员函数Format来转换

7.C++中为什么用模板类。

(1)可用来创建动态增长和减小的数据结构

(2)它是类型无关的,因此具有很高的可复用性。

(3)它在编译时而不是运行时检查数据类型,保证了类型安全

(4)它是平台无关的,可移植性

(5)可用于基本数据类型

8.CSingleLock是干什么的。

同步多个线程对一个数据类的同时访问

9.NEWTEXTMETRIC是什么。

物理字体结构,用来设置字体的高宽大小

10.程序什么时候应该使用线程,什么时候单线程效率高。

1.耗时的操作使用线程,提高应用程序响应

2.并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求。

3.多CPU系统中,使用线程提高CPU利用率

4.改善程序结构。

一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独

立的运行部分,这样的程序会利于理解和修改。

其他情况都使用单线程。

11.Windows是内核级线程么。

见下一题

12.Linux有内核级线程么。

线程通常被定义为一个进程中代码的不同执行路线。

从实现方式上划分,线程有两

种类型:

“用户级线程”和“内核级线程”。

用户线程指不需要内核支持而在用户程序

中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度

和管理线程的函数来控制用户线程。

这种线程甚至在象DOS这样的操作系统中也可实现

,但线程的调度需要用户程序完成,这有些类似Windows3.x的协作式多任务。

另外一

种则需要内核的参与,由内核完成

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1