1、华为机试南京面试题求一串字符串中出现次数最多的单词南京同学都陆续到华为参加了机试,题目整体难度不大,基本上都是考字符串相关的题目。这里就分享一套2012年华为南京机试C+或者C的编程题目。2012年华为南京机试第一题整数化成字符串给定一个整数(有可能是负数),将整数变成字符串。函数已经声明好类似void change(int number, char s)的形式。可以自己写用例测试。2012年华为南京机试第二题单链表逆序给定一个已经定义好的单链表,将单链表中的数字逆序。输入为head指针,返回的也是一个head指针。函数声明为void sor(Node *head)的形式。2012年华为南京机
2、试第三题字符串最大回文子串给定一个字符串,寻找它的一个最大子串,该子串是回文。例如给定用例字符串”gabcdcbaef”,那么最大回文字串是”abcdcba”。函数声明为void huiwen(char input, int len, char output)。一天几个考场的题目有相同的也有不同的,基本上难度都不大。要求做前两题就可以了,有能力的可以做第三题并且计入总分。有同学做完当场就看到是100分,也有0分的,至于怎么计分的不太清楚。希望七叶草提供的2012年华为南京机试编程题对你有帮助!武汉题目:有一个数组aN如a10=0,1,2,3,4,5,6,7,8,9每隔两个数删除一个数,如0,1
3、,2(删除),3,4,5(删除),6,7,8(删除),9,到数组尾部回到数组头部继续删除,要求编写一个函数实现实现上述操作,返回最后一个数的数组下标。函数接口:int getLast(int iLen)参数:数组初始元素个数iLen01#include 02#include 0304typedefstructnode *List;05typedefstructnode *PNode;0607typedefstructnode0809intdata;10structnode *next;11Node;1213intgetLast(intiLen)1415inti;16List L;17PNode
4、 tempNode,current;18L = (List)malloc(sizeof(Node);19L-next = NULL;20current = L;21for(i=0; idata = i;25current-next = tempNode;26current = tempNode;2728current-next = L-next;29current = L;30while(iLen 1)3132current = current-next-next;33tempNode = current-next;34current-next = tempNode-next;35printf
5、(%dn,tempNode-data);36free(tempNode);37iLen-;3839returncurrent-data;404142intmain()4344printf(last of 20 is %d,getLast(20);45return0;46编程题(共2题,第一题40分,第二题60分,共100分。请上机编写轨范,按题目要求提交文件。详见考试申明本试题采用自动测试用例进行评分,测试用例过错考生公开,凡不满足提交要求导致不能运行或用例不经由过程,不予评分)。1. 删除字符串中所有给定的子串(40分)问题描述:在给定字符串中查找所有特定子串并删除,若是没有找到响应子串,则
6、不作任何操作。要求实现函数:int delete_sub_str(const char *str, const char *sub_str, char *result_str)【输入】 str:输入的被操作字符串 sub_str:需要查找并删除的特定子字符串【输出】 result_str:在str字符串中删除所有sub_str子字符串后的终局【返回】删除的子字符串的个数I、 子串匹配只考虑最左匹配情况,即只需要从左到右进行字串匹配的情况。比如:在字符串abababab中,采用最左匹配子串aba,可以匹配2个aba字串。若是匹配出从左到右位置2起头的aba,则不是最左匹配,且只能匹配出1个aba
7、字串。II、 输入字符串不会跨越100 Bytes,请不用考虑超长字符串的情况。示例输入:str = abcde123abcd123sub_str = 123输出:result_str = abcdeabcd返回:2输入:str = abcde123abcd123sub_str = 1234输出:result_str = abcde123abcd123返回:02. 高精度整数加法(60分)问题描述:在计较机中,由于措置器位宽限制,只能措置有限精度的十进制整数加减法,比如在32位宽措置器计较机中,参与运算的操作数和终局必须在-231231-1之间。若是需要进行更年夜规模的十进制整数加法,需要使用
8、特殊的体式格局实现,比如使用字符串保存操作数和终局,采纳逐位运算的体式格局。如下:9876543210 + 1234567890 = ?让字符串 num1=9876543210,字符串 num2=1234567890,终局保存在字符串 result = 11111111100。-9876543210 + (-1234567890) = ?让字符串 num1=-9876543210,字符串 num2=-1234567890,终局保存在字符串 result = -11111111100。要求编程实现上述高精度的十进制加法。要求实现函数:void add (const char *num1, con
9、st char *num2, char *result)【输入】num1:字符串形式操作数1,若是操作数为负,则num10为符号位-num2:字符串形式操作数2,若是操作数为负,则num20为符号位-【输出】result:保存加法计较终局字符串,若是终局为负,则result0为符号位。I、 当输入为正数时,+不会出今朝输入字符串中;当输入为负数时,-会出今朝输入字符串中,且必然在输入字符串最左边位置;II、 输入字符串所有位均代表有效数字,即不存在由0起头的输入字符串,比如0012, -0012不会呈现;III、 要求输出字符串所有位均为有效数字,终局为正或0时+不出今朝输出字符串,终局为负时
10、输出字符串最左边位置为-。示例输入:num1 = 580num2 = -50输出:result = 530输入:num1 = 580num2 = -600输出:result = -20#includeusing namespace std;int deletestr(const char*str, const char*sub_str, char *result)const char*p = str;const char*p1 = str;const char*q = sub_str;int k=0;while(*p!=/0) if(*p=*q)&*q!=/0) p+; q+; const c
11、har*ptr = p; if(*p=/0) *result=/0; else if(*q=/0) q=sub_str; k+; p1 = p; else if(*p!=/0&*q!=/0) *result+ = *p1; p1+; p=p1; q=sub_str;if(*q!=/0) p=p1; while(*p!=/0) *result+ = *p+; *result = /0; void alg(const char*str1, const char*str2, char *result)const char *p = str1;const char *q = str2;int m =
12、0, n = 0;while(*p!=/0) p+; m+; while(*q!=/0) q+; n+;p=p-1;q=q-1;if(*str1!=-&*str2!=-)|(*str1=-&*str2=-) if(*str1=-) m-; n-; *result=0; while(m0&n0) if(*result+*p+*q)-3*0)=10) *result = 0+(*result+*p+*q)-3*0)%10; result+; *result=1; p-; q-; else *result = 0+(*result+*p+*q)-3*0); if(m=n)&m!=1) result+
13、; *result=0; else if(m!=n) result+; *result=0; p-; q-; m-; n-; if(m0) while(m0) if(*result+*p -2*0)=10) *result = 0+(*result+*p -2*0)%10; result+; *result=1; else *result = 0+(*result+*p -2*0); if(m!=1) result+; *result=0; p-; m-; else if(n0) while(n0) if(*result+*q -2*0)=10) *result = 0+(*result+*q
14、 -2*0)%10; result+; *result=1; else *result = 0+(*result+*q -2*0); if(n!=1) result+; *result=0; q-; n-; if(*str1!=-) result+; *result=/0; else result+; *result=-; result+; *result=/0;else int k1=0; int k2=0; const char*p1; const char*p2; const char*ptr1; const char*ptr2; if(*str1=-) k1=m-1; k2=n; p1
15、=p; p2=q; ptr1=str1+1; ptr2=str2; else if(*str2=-) k1=n-1; k2=m; p1=q; p2=p; ptr1=str2+1; ptr2=str1; int temp=0; /long const char*temptr; /pointer of long int temp1=0; const char*temptr1; if(k1k2) temp=k1; temp1=k2; temptr=p1; temptr1=p2; else if(k10) temp=k1; temp1=k2; temptr=p1; temptr1=p2; else t
16、emp=k2; temp1=k1; temptr=p2; temptr1=p1; *result=0;while(temp10) if(0-*result+*temptr-*temptr1)=0) *result=2*0-*result+*temptr-*temptr1; result+; *result=0;temptr-; temptr1-; temp1-; temp-; else *result = -*result+*temptr-*temptr1+1+9; result+; *result=1; temp1-; temp-; temptr-; temptr1-;if(temp0) w
17、hile(temp0) if(-*result+*temptr)=0) *result= 0+(-*result+*temptr); if(temp!=1) result+; *result=0; temp-; temptr-; else *result= 1+9-0+(-*result+*temptr); result+; *result=1; temp-; temptr-; if(*result=0) if(*temptr=-) *result=-; +result; *result=/0; else *result=/0; else if(*temptr=-) +result; *res
18、ult=-; +result; *result=/0; else +result; *result=/0;else if(*result=0) -result; while(*result=0) -result; +result; if(*temptr=-) *result=-; +result; *result=/0; else *result=/0; else if(*temptr=-) +result; *result=-; +result; *result=/0; else +result; *result=/0;int main()char *str = abcdabbabcacbaabcdabcababc;char *sub_str = ab;char result100;char *str1=-1462;char *str2=473;char re10;alg(str1, str2, re);deletestr(str, sub_str, result);cout result re;system(pause);return 0; (注:可编辑下载,若有不当之处,请指正,谢谢!)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1