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

合集下载

华为招聘面试考题及答案

华为招聘面试考题及答案

华为招聘面试考题及答案华为1)笔试可以选择java和c++。

2)面试:一面:技术面,40分钟,问的很细,uml,单点登录,j2ee二面:综合面,20分钟一个项目完整的经历三面:hr,职业规划,优势与劣势,期望工资与工作地点。

四面:老总面.华为面试题及答案1、局部变量能否和全局变量重名答:能,局部会屏蔽全局。

要用全局变量,需要使用"::"局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。

对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。

2、如何引用一个已经定义过的全局变量答:extern可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。

3、全局变量可不可以定义在可被多个.c文件包含的头文件中为什么答:可以,在不同的c文件中以static形式来声明同名全局变量。

可以在不同的c文件中声明同名的全局变量,前提是其中只能有一个c文件中对此变量赋初值,此时连接不会出错4、语句for( ;1 ;)有什么问题它是什么意思答:和while(1)相同。

5、do……while和while……do有什么区别答:前一个循环一遍再判断,后一个判断以后再循环6、请写出下列代码的输出内容以下是引用片段:#includemain(){int a,b,c,d;a=10;b=a++;c=++a;d=10*a++;printf("b,c,d:%d,%d,%d",b,c,d);return 0;}答:10,12,1207、static全局变量与普通的全局变量有什么区别static局部变量和普通局部变量有什么区别 static函数与普通函数有什么区别全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。

华为校园招聘上机题

华为校园招聘上机题

目录样题-初级题:从考试成绩中划出及格线 (2)样题-中级题:亮着电灯的盏数 (2)样题-高级题:地铁换乘 (3)8.29去掉最大值、最小值之后剩下的个数 (3)8.29从5个人中选取2个人作为礼仪 (4)8.29验证括号是否匹配 (5)8.31回文数 (5)8.31将第一行中含有第二行中“23”的数输出并排序 (6)8.31翻译电话号码 (6)9.1.AM 将整数倒序输出,剔除重复数据 (7)9.1.AM 大数相减 (8)9.1.AM 判断if语句括号是否合法 (8)9.1.PM (8)9.1.PM (9)9.1.PM (9)样题-初级题:从考试成绩中划出及格线10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:(1) 及格线是10的倍数;(2) 保证至少有60%的学生及格;(3) 如果所有的学生都高于60分,则及格线为60分样题-中级题:亮着电灯的盏数一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。

每盏电灯由一个拉线开关控制。

开始,电灯全部关着。

有n个学生从长廊穿过。

第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。

n个学生按此规定走完后,长廊里电灯有几盏亮着。

注:电灯数和学生数一致。

样题-高级题:地铁换乘已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的。

经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示。

编写程序,任意输入两个站点名称,输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)。

地铁线A(环线)经过车站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18 地铁线B(直线)经过车站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B158.29去掉最大值、最小值之后剩下的个数1、输入一串数,以','分隔,输出所有数中去掉最大值、最小值之后剩下的个数。

华为校园招聘上机笔试题

华为校园招聘上机笔试题

华为校园招聘上机笔试题华为校园招聘上机笔试题上机时间两小时,3道题1 字串转换问题描述:将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。

例如:aa 转换为 bc,zz 转换为 ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。

要求实现函数:void convert(char *input,char* output)【输入】 char *input , 输入的字符串【输出】 char *output ,输出的`字符串【返回】无示例输入:char*input="abcd"输出:char*output="bcde"输入:char*input="abbbcd"输出:char*output="bcdcde"void convert(char *input,char *output){char c='\0';int tag=0;int len=strlen(input);for(int i=0;i{if(input[i]!=c)//当前字符与前一个字符不相等,则该字符+1{output[i]=(input[i]-'a'+1)%26+'a';c=input[i];tag=1;}else{if(tag==1)//当前字符与前一个字符相等,且前面只有一个字符相同{output[i]=(input[i]-'a'+2)%26+'a';c='\0';tag=0;}else//当前字符与前一个字符相等,且前面已有2n个字符相同。

则按第一次出现算{output[i]=(input[i]-'a'+1)%26+'a';c=output[i];tag=1;}}}}void convert(char *input,char *output){char c='\0';int tag=0;int len=strlen(input);for(int i=0;i{if(input[i]!=c)//当前字符与前一个字符不相等,则该字符+1{output[i]=(input[i]-'a'+1)%26+'a';c=input[i];tag=1;}else{if(tag==1)//当前字符与前一个字符相等,且前面只有一个字符相同{output[i]=(input[i]-'a'+2)%26+'a';c='\0';tag=0;}else//当前字符与前一个字符相等,且前面已有2n个字符相同。

华为上机题汇总111题

华为上机题汇总111题

注:1.本文代码仅保证在visual studio 2005上运行通过!2.高亮的题目为华为机试第三题左右难度。

3.本文的字符串基本运用C++里的string类,很少使用常规字符数组形式。

4.freopen()为输入重定向,方便测试,具体用法问度娘。

1.给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,如aBf转换成bCg,字符串内的其他字符不改变,给定函数,编写函数void Stringchang(const char*inpu,char*output)其中input是输入字符串,output是输出字符串#include<iostream>#include<cctype>#include<cstring>using namespace std;void stringchang(const char*,char*);int main(){char input[100],output[100];cin.getline(input,100);stringchang(input,output);cout<<output<<endl;return 0;}void stringchang(const char* input,char* output){int m=strlen(input),n=0;for(int i=0;i<m;i++){if(isalpha(input[i])){if(input[i]=='z')output[n++]='a';else if(input[i]=='Z')output[n++]='A';elseoutput[n++]=input[i]+1;}elseoutput[n++]=input[i];}output[n]='\0';}2.求一个整型数字中有没有相同的部分,例如12386123这个整型数字中相同的部分是123,相同的部分至少应该是2位数,如果有相同部分返回1,如果没有则返回0。

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

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

2011年华为软件校园招聘编程测验1、请上机编写程序,按题目要求提交文件。

[详见考试说明,点击进入考试说明]3、评卷通过在给定用例输入下,严格按照试题要求比较考生实现函数的输出与预设输出。

两者相同则得分,不同则不得分。

4、评卷人保证测试用例输入参数的合法性,考生不用考虑输入参数非法或异常的情况5、评卷人保证测试用例输入在被测函数正常合法情况下使用不会导致程序错误6、如果考生函数异常导致程序崩溃或死循环,则自动评卷可能会被人为终止,剩余用例不被执行,无法得分7、基于上述阅卷规则,请考生严格按照题目要求功能实现程序,尽量保证实现函数的稳健性,同时建议完成一道题并调试保证正确性后,再考虑并实现下一题目(17)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++;elsereturn 2;if(*p=='\0')return 0;}else return 3;}elsereturn 1;}int main(){char num[]="87139a3887671";int k=fun(num);cout<<k<<endl;return 0;}(18) 数组比较(20分)•问题描述:比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。

华为机试题及答案

华为机试题及答案

华为机试题及答案1、通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。

请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。

测试:输入:“abc def gh i d"输出:“abc,def,gh,i,d,”#include〈stdio.h〉#include<string.h〉void DivideString(const char *pInputStr,long lInputLen,char *pOutputStr){int i=0,j=0;int flag=0;while(pInputStr[i]==’ '){i++;}for(;i<lInputLen;i++){if(pInputStr[i]==' '){flag=1;continue;}if(flag==1){flag=0;pOutputStr[j++]=’,';}pOutputStr[j++]=pInputStr[i];}pOutputStr[j++]=',’;pOutputStr[j]=’\0’;}int main(){char test[40];char re[40];gets(test);DivideString(test,strlen(test), re);printf(”%s",re);return 0;}2、将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a—>b,b—〉c,…,y—〉z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次.例如:aa 转换为bc,zz 转换为ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。

测试:输入:char*input="abbbcd” 输出:char*output="bcdcde”#include〈stdio.h〉#include<string.h>void convert(char *input,char*output){int i;for(i=0;i〈strlen(input);i++){if(i==0){output[i]=input[i]+1;if(output[i]==123){output[i]=97;}}else{if(input[i]!=input[i-1]){output[i]=input[i]+1;if(output[i]==123){output[i]=97;}}else{output[i]=input[i]+2;if(output[i]==123){output[i]=97;}if(output[i]==124){output[i]=98;}}}}output[i+1]='\0';}int main(){char in[20]={"asdfzzxzxz"};char on[20];//gets(in);convert(in,on);printf("%s",on);return 0;}3、通过键盘输入一串小写字母(a~z)组成的字符串。

华为招聘上机题

样题-初级题:从考试成绩中划出及格线10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:(1) 及格线是10的倍数;(2) 保证至少有60%的学生及格;(3) 如果所有的学生都高于60分,则及格线为60分样题-中级题:亮着电灯的盏数一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。

每盏电灯由一个拉线开关控制。

开始,电灯全部关着。

有n个学生从长廊穿过。

第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。

n个学生按此规定走完后,长廊里电灯有几盏亮着。

注:电灯数和学生数一致。

样题-高级题:地铁换乘已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的。

经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示。

编写程序,任意输入两个站点名称,输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)。

地铁线A(环线)经过车站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18 地铁线B(直线)经过车站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B158.29去掉最大值、最小值之后剩下的个数1、输入一串数,以','分隔,输出所有数中去掉最大值、最小值之后剩下的个数。

(其中最大值与最小值可能有多个)Smple input:3,3,5,3,6,9,7,9 Sample outPut: 38.29从5个人中选取2个人作为礼仪2、要从5个人中选取2个人作为礼仪,其中每个人的身高范围为160-190,要求2个人的身高差值最小(如果差值相同的话,选取其中最高的两人),以升序输出两个人的身高。

【免费下载】华为校园招聘机试题目及答案


{ //sum_zj是专业评委总分数;sum_dz是大众评委总分数;count1专业评委人
数;count2大众评委人数 int sum_zj=0,sum_dz=0,count1=0,count2=0,r; for(int i=0;i<n;i++) { if(judge_type[i]==1) { sum_zj+=score[i]; count1++; } else { sum_dz+=score[i]; count2++; } } if(count2==0)//无大众评委 { r=int((sum_zj/count1)); } else { r=int((sum_zj/count1)*0.6+(sum_dz/count2)*0.4); } return r;
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根保通据护过生高管产中线工资敷艺料设高试技中卷术资0配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高高与中中带资资负料料荷试试下卷卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试.,卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试5交写卷、底重保电。要护气管设装设线备置备4敷高动调、设中作试电技资,高气术料并中课3中试且资件、包卷拒料中管含试绝试调路线验动卷试敷槽方作技设、案,术技管以来术架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

华为java面试题及答案

华为java面试题及答案(实用版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的实用范文,如自我介绍、自我总结、自我鉴定、职场资料、工作报告、策划方案、演讲致辞、合同协议、条据文书、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!In addition, this shop provides various types of practical sample essays, such as self-introduction, self-summary, self-assessment, workplace information, work report, planning plan, speeches, contracts, agreements, documents, other sample essays, etc. Please pay attention to the different formats and writing methods of the model essay!华为java面试题及答案华为java面试题及答案Java技术员在面试中,参加华为企业的面试中,做好准备很重要,你了解面试题目了吗?下面本店铺已经为你们整理了华为java面试题及答案,希望可以帮到你。

华为的Java面试题及答案

华为的Java面试题及答案【网络综合 - 】1.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。

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

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

写出C程序。

循环链表,用取余操作做3.不能做switch()的参数类型是:switch的参数不能为实型。

4. static有什么用途?(请至少说明两种)a.限制变量的作用域b.设置变量的存储域7. 引用与指针有什么区别?a 引用必须被初始化,指针不必。

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

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

8. 描述实时系统的根本特性在特定时间内完成特定的任务,实时性与可靠性9. 全局变量和部分变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,部分变量在堆栈10. 什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于111. 堆栈溢出一般是由什么原因导致的?没有回收垃圾资源12. 什么函数不能声明为虚函数?13. 冒泡排序算法的时间复杂度是什么?O(n^2)14. 写出float x 与“零值”比拟的if语句。

if(x>0.000001&&x<-0.000001)16. Inter采用哪种网络协议?该协议的主要层次构造?tcp/ip 应用层/传输层/网络层/数据链路层/物理层17. Inter物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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++;elsereturn 2;if(*p=='\0')return 0;}else return 3;}elsereturn 1;}int main(){char num[]="87139a";int k=fun(num);cout<<k<<endl;return 0;}2、数组比较(20分)•问题描述:比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。

请编程实现上述比较,并返回比较中发现的不相等元素的个数比如:数组{1,3,5}和数组{77,21,1,3,5}按题述要求比较,不相等元素个数为0数组{1,3,5}和数组{77,21,1,3,5,7}按题述要求比较,不相等元素个数为3•要求实现函数:int array_compare(int len1, int array1[], int len2, int array2[]) •示例1)输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5},int len2 = 5 函数返回:02)输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5,7},int len2 = 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[]={1,3,5};int num2[]={77,21,1,3,5};int k=f(3,num1,5,num2);cout<<k<<endl;return 0;}3. 约瑟夫问题•问题描述:输入一个由随机数组成的数列(数列中每个数均是大于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。

•要求实现函数:void array_iterate(int len, int input_array[], int m, int output_array[ ])【输入】 int len:输入数列的长度;int intput_array[]:输入的初始数列int m:初始计数值【输出】 int output_array[]:输出的数值出列顺序•示例输入:int input_array[] = {3,1,2,4},int len = 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;j<m;){i=(i+1)%len; //注意这个是%,不要写成/if(a1[i]!=0)j++;}m=a1[i];a2[n++]=a1[i];a1[i]=0;if(k==len)break;k++;}}4. 简单四则运算•问题描述:输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值注: 1、表达式只含+, -, *, / 四则运算符,不含括号2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况3、要考虑加减乘除按通常四则运算规定的计算优先级4、除法用整数除法,即仅保留除法运算结果的整数部分。

比如8/3=2。

输入表达式保证无0作为除数情况发生5、输入字符串一定是符合题意合法的表达式,其中只包括数字字符和四则运算符字符,除此之外不含其它任何字符,不会出现计算溢出情况•要求实现函数:int calculate(int len,char *expStr)【输入】 int len: 字符串长度;char *expStr: 表达式字符串;【输出】无【返回】计算结果•示例1)输入:char *expStr = “1+4*5-8/3”函数返回:192)输入: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<len;i++) //主要运算{ if(a[i]>='0'&&a[i]<='9')num[k1++]=a[i]-'0';if(a[i]=='-'||a[i]=='+')str[k2++]=a[i];if(a[i]=='*'){num[k1-1]=num[k1-1]*(a[i+1]-'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<k2){ //顺序运算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<<k<<endl;return 0;}函数实现2:中序表达式转换为后序表达式,使用算法实现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<char> s1;for(int i=0;i<len;i++){ if(a[i]>='0'&&a[i]<='9')b[k++]=a[i];else{ if(s1.empty())s1.push(a[i]);else while(isp(a[i])<=isp(s1.top())){b[k++]=s1.top();s1.pop();}s1.push(a[i]);}}while(s1.empty()){b[k++]=s1.top();s1.pop();}b[k]='\0';return b;}void fun(char c,stack s2){ char p1,p2;if(!s2.empty()){p1=s2.top();s2.pop();else pos=false;cout<<"kongzhan"<<endl;}if(!s2.empty()){p2=s2.top();s2.top();else pos=false;cout<<"kongzhan"<<endl;}if(pos=true)switch(c){case'+':s2.push(p1+p2);break;case'-':s2.push(p2-p1);break;case'*':s2.push(p1*p2);break;case'/':s2.push(p2/p1);break;}}void eval(char a[]){ stack<char> s2;for(int i=len;i<len;i++){switch(a[i]){case'+':case'-':case'*':case'/':fun(a[i],&s2);break;default:s2.push(a[i]-'0');break;}}}int main(){ char a[]="1+4*5-8/3";int len=strlen(a);char b[20];char *q=transf(9,a,b);cout<<q<<endl;return 0;}5、一副牌中发五张扑克牌给你:让你判断数字的组成:有以下几种情况:1:四条:即四张一样数值的牌(牌均不论花色) 2:三条带一对3:三条带两张不相同数值的牌 4:两对 5:顺子包括10,J,Q,K,A6:什么都不是 7:只有一对思路:将数组排序,统计相同的数字的个数,再分情况讨论void sort(int a[]){ int temp;for(int i=0;i<5;i++)for(int j=0;j<5;j++)if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}void test(int a[]){ int *b=new int[5];int k=1;for(int i=0;i<5;i++){ b[i]=a[i];}for(int j=0;j<4;j++)if(a[j]==a[j+1])k++;if(k==4){if(b[1]==b[3])cout<<"四条"<<endl;elsecout<<"三条带一对"<<endl;}if(k==3){if(b[1]!=b[2]||b[2]!=b[3])cout<<"三条带两个不同的牌"<<endl;elsecout<<"两对"<<endl;}if(k==2)cout<<"一对"<<endl;if(k==1){if(b[4]-b[0]==4&&b[4]-b[1]==3&&b[4]-b[2]==2&&b[4]-b[3]==1)cout<<"顺子<<endl;elsecout<<"什么都不是"<<endl;}}int main(){ int a[]={1,2,4,4,4};test(a);return 0;}6、求两个数组的和差就是去掉两个数组中相同的元素然后将两个数组中的元素存放在一个新的数组中,按大小顺序排序思路:将数组A和数组B分别进行排序,然后将A与B进行比较,重复的跳过去,不重复的赋给数组C,依次输出。

相关文档
最新文档