华为笔试题大全原版Word下载.docx

上传人:b****3 文档编号:15791863 上传时间:2022-11-16 格式:DOCX 页数:88 大小:56.40KB
下载 相关 举报
华为笔试题大全原版Word下载.docx_第1页
第1页 / 共88页
华为笔试题大全原版Word下载.docx_第2页
第2页 / 共88页
华为笔试题大全原版Word下载.docx_第3页
第3页 / 共88页
华为笔试题大全原版Word下载.docx_第4页
第4页 / 共88页
华为笔试题大全原版Word下载.docx_第5页
第5页 / 共88页
点击查看更多>>
下载资源
资源描述

华为笔试题大全原版Word下载.docx

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

华为笔试题大全原版Word下载.docx

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的参数不能为实型。

 

上海华为的一道关于指针方面的编程题

intA[nSize],其中隐藏着若干0,其余非0整数,写一个函数intFunc(int*A,intnSize),使A把0移至后面,非0整数移至

数组前面并保持有序,返回值为原数据中第一个元素为0的下标。

(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)

华为笔试题含答案[软件工程题]

写一个程序,要求功能:

求出用1,2,5这三个数不同个数组合的和为100的组合个数。

如:

100个1是一个组合,5个1加19个5是一个组合。

请用C++语言写。

A.答案:

最容易想到的算法是:

设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++;

cout<

<

number<

endl;

上面这个程序一共要循环100*50*20次,效率实在是太低了

B.事实上,这个题目是一道明显的数学问题,而不是单纯的编程问题。

我的解法如下:

因为x+2y+5z=100

所以x+2y=100-5z,且z<

=20x<

=100y<

=50

所以(x+2y)<

=100,且(x+5z)是偶数

对z作循环,求x的可能值如下:

z=0,x=100,98,96,...0

z=1,x=95,93,...,1

z=2,x=90,88,...,0

z=3,x=85,83,...,1

z=4,x=80,78,...,0

......

z=19,x=5,3,1

z=20,x=0

因此,组合总数为100以内的偶数+95以内的奇数+90以内的偶数+...+5以内的奇数+1,

即为:

(51+48)+(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

所以,求总的组合次数可以编程为:

for(intm=0;

m<

m+=5)

{

number+=(m+2)/2;

}

这个程序,只需要循环21次,两个变量,就可以得到答案,比上面的那个程序高效了许多

倍----只是因为作了一些简单的数学分析

这再一次证明了:

计算机程序=数据结构+算法,而且算法是程序的灵魂,对任何工程问

题,当用软件来实现时,必须选取满足当前的资源限制,用户需求限制,开发时间限制等种

种限制条件下的最优算法。

而绝不能一拿到手,就立刻用最容易想到的算法编出一个程序了

事——这不是一个专业的研发人员的行为。

那么,那种最容易想到的算法就完全没有用吗?

不,这种算法正好可以用来验证新算法

的正确性,在调试阶段,这非常有用。

在很多大公司,例如微软,都采用了这种方法:

在调

试阶段,对一些重要的需要好的算法来实现的程序,而这种好的算法又比较复杂时,同时用

容易想到的算法来验证这段程序,如果两种算法得出的结果不一致(而最容易想到的算法保

证是正确的),那么说明优化的算法出了问题,需要修改。

可以举例表示为:

#ifdefDEBUG

intsimple();

#endif

intoptimize();

inafunction:

result=optimize();

ASSERT(result==simple());

这样,在调试阶段,如果简单算法和优化算法的结果不一致,就会打出断言。

同时,在程

序的发布版本,却不会包含笨重的simple()函数。

——任何大型工程软件都需要预先设计良好的调试手段,而这里提到的就是一种有用的方法。

一个学生的信息是:

姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起,给出一个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;

printf("

Pleaseinputtheinformationofthestudent:

namesexnoage\n"

);

scanf("

%s%c%d%d"

s->

name,&

s->

sex,&

no,&

age);

p=s;

Createsuccessful!

"

return(h);

voiddeletelist(structstu*s,inta)

structstu*p;

while(s->

age!

=a)

s=s->

next;

if(s==NULL)

Therecordisnotexist."

else

next=s->

Deletesuccessful!

voiddisplay(structstu*s)

while(s!

=NULL)

%s%c%d%d\n"

name,s->

sex,s->

no,s->

intmain()

structstu*s;

intn,age;

Pleaseinputthelengthofseqlist:

\n"

%d"

&

n);

s=creatlist(n);

display(s);

Pleaseinputtheage:

deletelist(s,age);

return0;

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

voiduppers(char*s,char*us)

for(;

*s!

='

\0'

;

s++,us++)

if(*s>

a'

*s<

z'

*us=*s-32;

*us=*s;

*us='

char*s,*us;

charss[20];

Pleaseinputastring:

%s"

ss);

s=ss;

uppers(s,us);

Theresultis:

\n%s\n"

us);

getch();

随机输入一个数,判断它是不是对称数(回文数)(如3,121,12321,45254)。

不能用字符串库函数

/***************************************************************

1.

函数名称:

Symmetry

功能:

判断一个数时候为回文数(121,35653)

输入:

长整型的数

输出:

若为回文数返回值为1esle0

******************************************************************/

unsignedcharSymmetry(longn)

longi,temp;

i=n;

temp=0;

while(i)//不用出现长度问题,将数按高低位掉换

temp=temp*10+i%10;

i/=10;

return(temp==n);

}

方法一

/*---------------------------------------------------------------------------

判断字符串是否为回文数字

实现:

先将字符串转换为正整数,再将正整数逆序组合为新的正整数,两数相同则为回文数字

char*s:

待判断的字符串

返回:

0:

正确;

1:

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

当前位置:首页 > 人文社科 > 文学研究

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

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