2019最全华为上机试题及部分答案

发布 2023-12-27 01:25:09 阅读 1376

2024年华为软件校园招聘编程测验。

1、请上机编写程序,按题目要求提交文件。[详见考试说明,点击进入考试说明]

3、评卷通过在给定用例输入下,严格按照试题要求比较考生实现函数的输出与预设输出。两者相同则得分,不同则不得分。

4、评卷人保证测试用例输入参数的合法性,考生不用考虑输入参数非法或异常的情况。

5、评卷人保证测试用例输入在被测函数正常合法情况下使用不会导致程序错误。

6、如果考生函数异常导致程序崩溃或死循环,则自动评卷可能会被人为终止,剩余用例不被执行,无法得分。

7、基于上述阅卷规则,请考生严格按照题目要求功能实现程序,尽量保证实现函数的稳健性,同时建议完成一道题并调试保证正确性后,再考虑并实现下一题目。

1,判断**号码是否合法:

/要注意情况包含,有可能会同时出现几种不好的情况,要按照顺序输出错误。不能同时输出好几种错误,应该是这样包含:先判断长度是否符合,再判断是否以86打头,再判断有无其他字符。

int fun(char num)

char *p=num;

int n=strlen(num);

if(n==13)

elsereturn 1;

int main()

char num=87139a3887671";

int k=fun(num);

cout< return 0;

1.数组比较(20分)

问题描述:比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。请编程实现上述比较,并返回比较中发现的不相等元素的个数。

比如:数组和数组按题述要求比较,不相等元素个数为0

数组和数组按题述要求比较,不相等元素个数为3

要求实现函数:

intarray_compare(intlen1,intarray1,intlen2,intarray2)

示例。1) 输入:intarray1=intlen1=3,intarray2=intlen2=5 函数返回:0

2) 输入:intarray1=intlen1=3,intarray2=intlen2=6 函数返回:3

函数如下:using namespace std;

int f(int len1,int arry1,int len2,int arry2)

int k=0;

for(int i=len1-1,j=len2-1;i>=0&&j>=0;i--,j--)

if(arry1[i]!=arry2[j])

k++;return k;

int main()

int num1=

int num2=

int k=f(3,num1,5,num2);

cout< return 0;

2.约瑟夫问题。

问题描述:输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。从数列首位置开始计数,计数到m后,将数列该位置数值替换计数值m,并将数列该位置数值出列,然后从下一位置从新开始计数,直到数列所有数值出列为止。

如果计数到达数列尾段,则返回数列首位置继续计数。请编程实现上述计数过程,同时输出数值出列的顺。

比如: 输入的随机数列为:3,1,2,4,初始计数值m=7,从数列首位置开始计数(数值3所在位置)

第一轮计数出列数字为2,计数值更新m=2,出列后数列为3,1,4,从数值4所在位置从新开始计数。

第二轮计数出列数字为3,计数值更新m=3,出列后数列为1,4,从数值1所在位置开始计数。

第三轮计数出列数字为1,计数值更新m=1,出列后数列为4,从数值4所在位置开始计数。

最后一轮计数出列数字为4,计数过程完成。

输出数值出列顺序为:2,3,1,4。

要求实现函数:

voidarray_iterate(intlen,intinput_array,intm,intoutput_array)

输入】 intlen:输入数列的长度;

intintput_array:输入的初始数列。

intm:初始计数值。

输出】 intoutput_array:输出的数值出列顺序。

示例。输入:intinput_array=intlen=4,m=7

输出:output_array=

函数如下:void fun(int len,int a1,int len2,int a2)

int n=0,i=-1,k=1,m=len2;

while(1)

m=a1[i];

a2[n++]a1[i];

a1[i]=0;

if(k==len)break; k++;

3.简单四则运算。

问题描述:输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值。

注: 1、表达式只含+,-四则运算符,不含括号。

2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况。

3、要考虑加减乘除按通常四则运算规定的计算优先级。

4、除法用整数除法,即仅保留除法运算结果的整数部分。比如8/3=2。输入表达式保证无0作为除数情况发生。

5、输入字符串一定是符合题意合法的表达式,其中只包括数字字符和四则运算符字符,除此之外不含其它任何字符,不会出现计算溢出情况。

要求实现函数:

intcalculate(intlen,char*expstr)

输入】 intlen:字符串长度;

char*expstr:表达式字符串;

输出】 无。

返回】 计算结果。

示例。1) 输入:char*expstr=“1+4*5-8/3” 函数返回:19

2) 输入:char*expstr=“8/3*3” 函数返回:6

简化版的四则运算:没有括号,只有加减乘除四种运算。

int fun(char a,int len) /字符数组和字符数组的长度。

int num[20];

char str[20];

int k1=0,k2=0;

int data=0;

for(int i=0;i //遇见*,就运算,结果保存在数组中。

if(a[i]==

num[k1-1]=num[k1-1]/(a[i+1]-'0');i++;

int temp=num[0];

int j=0两个数组只剩下数组和加减运算符。

while(j if(str[j]==

temp=temp-num[j+1];

else if(str[j]='

temp=temp+num[j+1];j++;

return temp;

int main()

har a=3*3+7+4/3";

int k=fun(a,9);

cout< return 0;

函数实现2:中序表达式转换为后序表达式,使用算法实现。

int isp(char c)

int p;

switch(c)

return p;

char* transf(int len,char a,char b)

int k=0;

stack s1;

for(int i=0;i

while(

b[k++]

b[k]='0';

return b;

void fun(char c,stack s2)

char p1,p2;

if(!p1=

else pos=false;

cout<<"kongzhan"< if(!

p2=else pos=false;

cout<<"kongzhan"< if(pos=true)

switch(c)

void eval(char a)

stack s2;

for(int i=len;i switch(a[i])

int main()

char a=1+4*5-8/3";

int len=strlen(a);

char b[20];

char *q=transf(9,a,b);

cout< return 0;

第五题:一副牌中发五张扑克牌给你:让你判断数字的组成:有以下几种情况:

1:四条:即四张一样数值的牌(牌均不论花色) 2:三条带一对。

3:三条带两张不相同数值的牌 4:两对 5:顺子包括10,j,q,k,a

6:什么都不是 7:只有一对

2019上机考试题总

word上机。打开word 随意输入四段文字 每一段三行文字,复制方法 选择对象点复制,选择位置点粘贴 后进行如下设置 1 给文章加标题为 电脑会说话吗?并且把此标题设置为居中 红色 字符间距5磅 文字提升6磅,加着重号,15 底纹 将标题中 会说话吗?设置为二号隶书 阳文 将标题中 电脑 设置为二...

2019C 上机考试试题

1 圆柱高h 3.0,底圆半经r 2.0,求圆柱的体积 圆柱的表面积 2 编程画出正弦曲线。3 将下列 输入,并调试运行。include using namespace std int main int i,j i aj b cout i j n return 0 1 编一程序,输入月份数字,输出该...

消防及水上作业安全考核部分试题

每题一分,共20分 1 扑救电气火灾应首先做什么?切断电源 2 消防法从什么时间开始实施?1998.9.1 3 什么灭火器可以扑救电器火灾?co2 abc干粉灭火器 4 在装修时使用溶剂和油漆除了杜绝一切火种外,还要注意什么?通风 5 火灾初起阶段是扑救火灾的阶段?最有利 6 电器设备发生火灾时不应...