华为上机题汇总111题教学提纲.doc

上传人:1595****071 文档编号:51793830 上传时间:2022-10-19 格式:DOC 页数:451 大小:938.50KB
返回 下载 相关 举报
华为上机题汇总111题教学提纲.doc_第1页
第1页 / 共451页
华为上机题汇总111题教学提纲.doc_第2页
第2页 / 共451页
点击查看更多>>
资源描述

《华为上机题汇总111题教学提纲.doc》由会员分享,可在线阅读,更多相关《华为上机题汇总111题教学提纲.doc(451页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Good is good, but better carries it.精益求精,善益求善。华为上机题汇总111题-注:1.本文代码仅保证在visualstudio2005上运行通过!2.高亮的题目为华为机试第三题左右难度。3.本文的字符串基本运用C+里的string类,很少使用常规字符数组形式。1. 4.freopen()为输入重定向,方便测试,具体用法问度娘。给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,如aBf转换成bCg,字符串内的其他字符不改变,给定函数,编写函数voidStringchang(constchar*inpu,char*outp

2、ut)其中input是输入字符串,output是输出字符串#include#include#includeusingnamespacestd;voidstringchang(constchar*,char*);intmain()charinput100,output100;cin.getline(input,100);stringchang(input,output);coutoutputendl;return0;voidstringchang(constchar*input,char*output)intm=strlen(input),n=0;for(inti=0;im;i+)if(isal

3、pha(inputi)if(inputi=z)outputn+=a;elseif(inputi=Z)outputn+=A;elseoutputn+=inputi+1;elseoutputn+=inputi;outputn=0;2. 求一个整型数字中有没有相同的部分,例如12386123这个整型数字中相同的部分是123,相同的部分至少应该是2位数,如果有相同部分返回1,如果没有则返回0。方法是先将整型数字转换到数组中,再判断。函数为intsame(intnum)其中num是输入的整型数字写的很差,懒得改了,不要看吧!#include#includeusingnamespacestd;intsam

4、e(int);intmain()intnum;cinnum;intm=same(num);coutm0)nn1+=num%10;num/=10;for(inti=0;in1;i+)i1=i;c=0;j1=0;for(intj=0;j=2)return1;i1+;elsec=0;j=j-j1;j1=0;i1=i;return0;3. 求两个字符串的乘积,结果存到字符串中,例如字符串一中存的“657891”,字符串二中存的“521”,分别将字符串中的字符转换成整型数字,进行计算后,再转换成字符类型存储起来函数为voidmul(char*input1,intn,char*input2,intm,ch

5、ar*output)其中input1和input2是输入,n是input1的长度,n2是input2的长度。Output是输出#include#include#includeusingnamespacestd;voidmul(char*,int,char*,int,char*);intmain()charinput1100,input2100,output100;cininput1input2;intn=strlen(input1);intm=strlen(input2);mul(input1,n,input2,m,output);coutoutputendl;return0;voidmul(

6、char*input1,intn,char*input2,intm,char*output)inti1=0,i2=0,p1=n,p2=m,p3=0;for(inti=0;in;i+)i1+=(input1i-0)*pow(10.0,-p1);for(inti=0;i0)outputp3+=ou%10+0;ou/=10;outputp3=0;for(inti=0;ip3/2;i+)temp=outputi;outputi=outputp3-1-i;outputp3-1-i=temp;4.删除子串,只要是原串中有相同的子串就删掉,不管有多少个,返回子串个数。#include#includeusin

7、gnamespacestd;intdeletesub(string&str,conststring&sub,int);intmain()stringstr,sub;getline(cin,str);getline(cin,sub);intn=sub.size();intnum=deletesub(str,sub,n);coutnumendl;/coutstrendl;输出删除后的字符串return0;intdeletesub(string&str,conststring&sub,intn)intm,flag=0,num=0;while(flag=0)m=str.find(sub);if(m0)

8、returnnum;elsestr.erase(m,n);/删除子串num+;5.约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3.n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。#includeusingnamespacestd;structnodeintnum;node*next;node*creat(intn)node*q,*p,*head=NULL;for(inti=1;inum=i;if(head=NULL)head=p;elseq-next=p;q=p

9、;p-next=head;returnp;intmain()intn,k,m;cinnkm;node*l,*q;l=creat(n);q=l;l=l-next;for(inti=1;inext;while(l-next!=l)for(inti=1;inext;coutnum;q-next=l-next;deletel;l=q-next;coutnumendl;deletel;return0;6. 比较一个数组的元素是否为回文数组#include#includeusingnamespacestd;intmain()stringstr;getline(cin,str);intm=str.size(

10、);for(inti=0;im/2;i+)if(stri!=strm-1-i)coutNOendl;return0;coutYESendl;return0;7.比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。请编程实现上述比较,并返回比较中发现的不相等元素的个数比如:数组1,3,5和数组77,21,1,3,5按题述要求比较,不相等元素个数为0数组1,3,5和数组77,21,1,3,5,7按题述要求比较,不相等元素个数为3要求实现函数:intarray_compare(intlen1,intarray1,intlen2,intarra

11、y2)【输入】intlen1:输入被比较数组1的元素个数;intarray1:输入被比较数组1;intlen2:输入被比较数组2的元素个数;intarray2:输入被比较数组2;【输出】无【返回】不相等元素的个数,类型为int示例1)输入:intarray1=1,3,5,intlen1=3,intarray2=77,21,1,3,5,intlen2=5函数返回:02)输入:intarray1=1,3,5,intlen1=3,intarray2=77,21,1,3,5,7,intlen2=6函数返回:#include#includeusingnamespacestd;intarray_compa

12、re(int,int*,int,int*);intmain()intlen1,len2;cinlen1;int*array1=newintlen1;for(inti=0;iarray1i;cinlen2;int*array2=newintlen2;for(inti=0;iarray2i;intm=array_compare(len1,array1,len2,array2);coutm=0&j=0)if(array1i!=array2j)num+;i-;j-;returnnum;8.约瑟夫环变种:输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。从数列首位置开

13、始计数,计数到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所在位置开始计数最后一轮计数出列数字

14、为4,计数过程完成。输出数值出列顺序为:2,3,1,4。要求实现函数:voidarray_iterate(intlen,intinput_array,intm,intoutput_array)【输入】intlen:输入数列的长度;intintput_array:输入的初始数列intm:初始计数值【输出】intoutput_array:输出的数值出列顺序【返回】无示例输入:intinput_array=3,1,2,4,intlen=4,m=7输出:output_array=2,3,1,4#includeusingnamespacestd;structnodeintnum;node*next;no

15、de*creat(intlen,int*input_array)node*p,*q,*head=NULL;for(inti=0;inum=input_arrayi;if(head=NULL)head=p;elseq-next=p;q=p;p-next=head;returnp;intmain()intlen,m,n=0;cinlen;int*input_array=newintlen;for(inti=0;iinput_arrayi;int*output_array=newintlen;cinm;node*l=creat(len,input_array);node*q=l;l=l-next;w

16、hile(l-next!=l)for(inti=1;inext;m=l-num;output_arrayn+=l-num;q-next=l-next;deletel;l=q-next;output_arrayn=l-num;deletel;for(inti=0;in;i+)coutoutput_arrayi;coutoutput_arraynendl;deleteinput_array;deleteoutput_array;return0;9. 手机号码合法性:l 问题描述:我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下:1、长度13位;2、以

17、86的国家码打头;3、手机号码的每一位都是数字。请实现手机号码合法性判断的函数要求:1)如果手机号码合法,返回0;2)如果手机号码长度不合法,返回13)如果手机号码中包含非数字的字符,返回2;4)如果手机号码不是以86打头的,返回3;【注】除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。l 要求实现函数:intverifyMsisdn(char*inMsisdn)【输入】char*inMsisdn,表示输入的手机号码字符串。【输出】无【返回】判断的结果,类型为int。l 示例输入:inMsisdn=“86912345

18、6789“输出:无返回:1输入:inMsisdn=“88139123456789“输出:无返回:3输入:inMsisdn=“86139123456789“输出:无返回:0#include#include#includeusingnamespacestd;intverifyMsisdn(stringnum);intmain()stringnum;getline(cin,num);intm=verifyMsisdn(num);coutmendl;return0;intverifyMsisdn(stringnum)intn=num.size();if(n!=13)return1;for(inti=0

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

20、,不会出现计算溢出情况要求实现函数:intcalculate(intlen,char*expStr)【输入】intlen:字符串长度;char*expStr:表达式字符串;【输出】无【返回】计算结果示例1)输入:char*expStr=“1+4*5-8/3”函数返回:192)输入:char*expStr=“8/3*3”函数返回:6#include#include#includeusingnamespacestd;structnodecharc;node*next;structnode1inta1;node1*next;intcalculate(int,string);intmain()intl

21、en;stringexpStr;cinexpStr;len=expStr.size();intm=calculate(len,expStr);coutmendl;return0;intcalculate(intlen,stringa)char*b=newcharlen+1;node*top=NULL,*q,*p;intn=0;for(inti=0;ic=ai;p-next=top;top=p;elseif(ai=+|ai=-)while(top!=NULL)if(top-c!=()bn+=top-c;q=top;top=top-next;deleteq;elsebreak;p=newnode;

22、p-c=ai;p-next=top;top=p;elseif(ai=*|ai=/)while(top!=NULL&(top-c=*|top-c=/)bn+=top-c;q=top;top=top-next;deleteq;p=newnode;p-c=ai;p-next=top;top=p;elseif(ai=)while(top-c!=()bn+=top-c;q=top;top=top-next;deleteq;q=top;top=top-next;deleteq;while(top!=NULL)bn+=top-c;q=top;top=top-next;deleteq;bn=0;coutben

23、dl;node1*p1,*top1=NULL,*q1;intnum1,num2;for(inti=0;ia1=bi-0;p1-next=top1;top1=p1;elseq1=top1;top1=top1-next;num1=top1-a1;num2=q1-a1;deleteq1;if(bi=+)top1-a1=num1+num2;elseif(bi=-)top1-a1=num1-num2;elseif(bi=*)top1-a1=num1*num2;elsetop1-a1=num1/num2;intt=top1-a1;deletetop1;deleteb;returnt;11.选秀节目打分,分

24、为专家评委和大众评委,score数组里面存储每个评委打的分数,judge_type里存储与score数组对应的评委类别,judge_typei=1,表示专家评委,judge_typei=2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分=专家评委平均分*0.6+大众评委*0.4,总分取整。如果没有大众评委,则总分=专家评委平均分,总分取整。函数最终返回选手得分。函数接口intcal_score(intscore,intjudge_type,intn)#includeusingnamespacestd;intcal_score(i

25、nt*,int*,int);intmain()intn;cinn;int*score=newintn;int*judge_type=newintn;for(inti=0;iscorei;for(inti=0;ijudge_typei;intave=cal_score(score,judge_type,n);coutaveendl;return0;intcal_score(intscore,intjudge_type,intn)intm1_score=0,m2_score=0,m1=0,m2=0,tol;for(inti=0;in;i+)if(judge_typei=1)m1_score+=sc

26、orei;m1+;elsem2_score+=scorei;m2+;intave1=m1_score/m1,ave2;if(m2=0)tol=ave1;elseave2=m2_score/m2;tol=ave1*0.6+ave2*0.4;returntol;12.给定一个数组input,如果数组长度n为奇数,则将数组中最大的元素放到output数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到output数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。例如:input=3,6,1,9,7output=3,7,

27、9,6,1;input=3,6,1,9,7,8output=1,6,8,9,7,3#include#includeusingnamespacestd;intcmp(constvoid*a,constvoid*b)return*(int*)b-*(int*)a;voidpaixu(intinput,intoutput,intn);intmain()intn;cinn;int*input=newintn;int*output=newintn;for(inti=0;iinputi;qsort(input,n,sizeof(int),cmp);paixu(input,output,n);for(int

28、i=0;in-1;i+)coutoutputi;coutoutputn-1endl;deleteinput;deleteoutput;return0;voidpaixu(intinput,intoutput,intn)outputn/2=input0;intm,a=0;if(n%2=0)m=n/2-1;elsem=n/2;for(inti=1;i=m;i+)outputn/2-i=input+a;outputn/2+i=input+a;if(n%2=0)output0=input+a;13.操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级=50且=255。优

29、先级大于255的为非法任务,应予以剔除。现有一任务队列task,长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。函数scheduler实现如下功能,将task中的任务按照系统任务、用户任务依次存放到system_task数组和user_task数组中(数组中元素的值是任务在task数组中的下标),并且优先级高的任务排在前面,数组元素为-1表示结束。例如:task=0,30,155,1,80,300,170,40,99system_task=0,3,1,7,-1user_task=4,8,2,6,-1函数接口voidscheduler(inttask,intn,intsyst

30、em_task,intuser_task)#includeusingnamespacestd;voidscheduler(inttask,intn,intsystem_task,intuser_task);intmain()intn;cinn;int*task=newintn;int*system_task=newintn+1;int*user_task=newintn+1;for(inti=0;itaski;scheduler(task,n,system_task,user_task);for(inti=0;system_taski!=-1;i+)coutsystem_taski;cout-

31、1endl;for(inti=0;user_taski!=-1;i+)coutuser_taski;cout-1endl;deletetask;deletesystem_task;deleteuser_task;return0;voidscheduler(inttask,intn,intsystem_task,intuser_task)intm1=0,m2=0,temp;for(inti=0;i=0&taski=50&taski=255)user_taskm2+=i;system_taskm1=-1;user_taskm2=-1;for(inti=0;im1-1;i+)for(intj=i+1

32、;jtasksystem_taskj)temp=system_taski;system_taski=system_taskj;system_taskj=temp;for(inti=0;im2-1;i+)for(intj=i+1;jtaskuser_taskj)temp=user_taski;user_taski=user_taskj;user_taskj=temp;14. 字符串替换描述:编写一个字符串替换函数,如strSrc为原字符串,strFind是待替换的字符串,strReplace为替换字符串。举个直观的例子吧,如:“ABCDEFGHIJKLMNOPQRSTUVWXYZ”这个字符串,把

33、其中的“RST”替换为“ggg”这个字符串,结果就变成了:ABCDEFGHIJKLMNOPQgggUVWXYZ#include#includeusingnamespacestd;intmain()stringstrSrc,strFind,strReplace;getline(cin,strSrc);getline(cin,strFind);getline(cin,strReplace);intn=strFind.size();intflag=0,m;while(flag=0)m=strSrc.find(strFind);if(m0)coutstrSrcendl;return0;elsestrS

34、rc.replace(m,m+n,strReplace);15.对一个数组,将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数若奇数和偶数不等长,则把剩下的直接放到数组中。思路:先进行奇偶判断,得到奇数和偶数数组。然后对两数组排序,进行长度判断,最后组织数据。#include#includeusingnamespacestd;intcmp(constvoid*a,constvoid*b)return*(int*)a-*(int*)b;intcmp1(constvoid*a,constvoid*b)return*(int*)b-*(int*)a;intmain()intn,m1=0,m2=0,m=0;cinn;int*num=newintn;int*ji=newintn;int*ou=newintn;for(inti=0;inumi;if(numi%2=1)jim1+=numi;elseoum2+=numi;qsort(ji,m1,sizeof(int),cmp);qsort(ou,m2,sizeof(int),cmp1);for(inti=0;im1&im2)for(inti=m2;im1;i+)numm+=jii;elsefor(inti=m1;im2;i+)

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

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁