华为笔试Word文件下载.docx
- 文档编号:17329096
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:17
- 大小:26.65KB
华为笔试Word文件下载.docx
《华为笔试Word文件下载.docx》由会员分享,可在线阅读,更多相关《华为笔试Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
(
)
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的协作式多任务。
另外一
种则需要内核的参与,由内核完成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华为 笔试