应聘华为软件的上机试题及部分答案

上传人:大米 文档编号:499103006 上传时间:2023-05-30 格式:DOC 页数:25 大小:80.01KB
返回 下载 相关 举报
应聘华为软件的上机试题及部分答案_第1页
第1页 / 共25页
应聘华为软件的上机试题及部分答案_第2页
第2页 / 共25页
应聘华为软件的上机试题及部分答案_第3页
第3页 / 共25页
应聘华为软件的上机试题及部分答案_第4页
第4页 / 共25页
应聘华为软件的上机试题及部分答案_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《应聘华为软件的上机试题及部分答案》由会员分享,可在线阅读,更多相关《应聘华为软件的上机试题及部分答案(25页珍藏版)》请在金锄头文库上搜索。

1、1,判断电话号码是否合法:/要注意情况包含,有可能会同时出现几种不好的情况,要按照顺序输出错误。不能同时输出好几种错误,应该是这样包含:先判断长度是否符合,再判断是否以86打头,再判断有无其他字符int fun(char num)char *p=num;int n=strlen(num);if(n=13)if(*p=8&*(p+1)=6)while(*p!=0)if(*p=0&*p=9)p+;else return 2;if(*p=0)return 0;else return 3;elsereturn 1;int main()char num=87139a3887671;int k=fun(n

2、um);coutk=0&j=0;i-,j-)if(arry1i!=arry2j)k+;return k;int main()int num1=1,3,5;int num2=77,21,1,3,5;int k=f(3,num1,5,num2);coutkendl;return 0;3.约瑟夫问题 问题描述:输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。从数列首位置开始计数,计数到m后,将数列该位置数值替换计数值m,并将数列该位置数值出列,然后从下一位置从新开始计数,直到数列所有数值出列为止。如果计数到达数列尾段,则返回数列首位置继续计数。请编程实现上述计数

3、过程,同时输出数值出列的顺比如: 输入的随机数列为: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)

4、【输入】 intlen:输入数列的长度;intintput_array:输入的初始数列intm:初始计数值【输出】 intoutput_array:输出的数值出列顺序 示例输入:intinput_array=3,1,2,4,intlen=4,m=7输出:output_array=2,3,1,4函数如下:void fun(int len,int a1,int len2,int a2)int n=0,i=-1,k=1,m=len2;while(1)for(int j=0;jm;)i=(i+1)%len; /注意这个是%,不要写成/if(a1i!=0)j+; m=a1i;a2n+=a1i;a1i=0

5、; if(k=len)break; k+;4.简单四则运算 问题描述:输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值注: 1、表达式只含+,-,*,/四则运算符,不含括号2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况3、要考虑加减乘除按通常四则运算规定的计算优先级4、除法用整数除法,即仅保留除法运算结果的整数部分。比如8/3=2。输入表达式保证无0作为除数情况发生5、输入字符串一定是符合题意合法的表达式,其中只包括数字字符和四则运算符字符,除此之外不含其它任何字符,不会出现计算溢出情况 要求实现函数:intcalculate(intlen,char*ex

6、pStr)【输入】 intlen:字符串长度;char*expStr:表达式字符串;【输出】 无【返回】 计算结果 示例1) 输入:char*expStr=“1+4*5-8/3” 函数返回:192) 输入:char*expStr=“8/3*3” 函数返回:6 简化版的四则运算:没有括号,只有加减乘除四种运算int fun(char a,int len) /字符数组和字符数组的长度int num20;char str20;int k1=0,k2=0;int data=0;for(int i=0;i=0&ai=9) numk1+=ai-0;if(ai=-|ai=+)strk2+=ai;if(ai=

7、*) numk1-1=numk1-1*(ai+1-0);i+;/遇见*,就运算,结果保存在数组中if(ai=/) numk1-1=numk1-1/(ai+1-0);i+;int temp=num0;int j=0; /两个数组只剩下数组和加减运算符while(jk2) /顺序运算if(strj=-)temp=temp-numj+1;else if(strj=+)temp=temp+numj+1;j+;return temp;int main() har a=3*3+7+4/3;int k=fun(a,9);coutkendl;return 0;函数实现2:中序表达式转换为后序表达式,使用算法实

8、现int isp(char c) int p;switch(c)case *:case /:p=1;break;case +:case -: p=0;break;return p;char* transf(int len,char a,char b)int k=0;stack s1;for(int i=0;i=0&ai=9)bk+=ai; else if(s1.empty()s1.push(ai); else while(isp(ai)=isp(s1.top() bk+=s1.top();s1.pop();s1.push(ai);while(s1.empty()bk+=s1.top();s1.

9、pop();bk=0;return b;void fun(char c,stack s2) char p1,p2;if(!s2.empty()p1=s2.top();s2.pop();else pos=false;coutkongzhanendl;if(!s2.empty()p2=s2.top();s2.top();else pos=false;coutkongzhanendl;if(pos=true)switch(c)case +:s2.push(p1+p2);break;case -:s2.push(p2-p1);break;case *:s2.push(p1*p2);break;case

10、 /:s2.push(p2/p1);break;void eval(char a) stack s2;for(int i=len;ilen;i+)switch(ai)case +:case -:case *:case /:fun(ai,&s2);break;default:s2.push(ai-0);break;int main() char a=1+4*5-8/3;int len=strlen(a);char b20;char *q=transf(9,a,b);coutqendl;return 0;5、一副牌中发五张扑克牌给你:让你判断数字的组成:有以下几种情况:1:四条:即四张一样数值的牌(牌均不论花色) 2:三条带一对3:三条带两张不相同数值的牌 4:两对 5:顺子包括10,J,Q,K,A6:什么都不是 7:只有一对 思路:将数组排序,统计相同的数字的个数,再分情况讨论void sort(int a)int temp;for(int i=0;i5;i+) for(int j=0;jaj)temp=ai;ai=aj;aj=temp;void test(int a)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 习题/试题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号