资源描述:
《2012华为校园招聘软件研发笔试题(自己笔记注释)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1、删除子串,只要是原串中有相同的子串就删掉,不管有多少个,返回子串个数。#include#include#include#includeintdelete_sub_str(constchar*str,constchar*sub_str,char*result){assert(str!=NULL&&sub_str!=NULL);constchar*p,*q;char*t,*temp;p=str;q=sub_str;t=result;intn,count=0;n=strlen(q);temp=(char*)
2、malloc(n+1);memset(temp,0x00,n+1);while(*p){memcpy(temp,p,n);if(strcmp(temp,q)==0){count++;memset(temp,0x00,n+1);p=p+n;}else{*t=*p;p++;t++;memset(temp,0x00,n+1);}}free(temp);returncount;}voidmain(){chars[100]={ };intnum=delete_sub_str(123abc12de234fg1hi34j123k,123,s);printf(Thenumberofsub_str
3、is%dr,num);printf(“Theresultstringis%sr”,s);}2、约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。#include#includetypedefstructNode{intnum;structNode*next;}LinkList;LinkList*creat(intn){LinkList*p,*q,*he
4、ad;inti=1;p=(LinkList*)malloc(sizeof(LinkList));p->num=i;head=p;for(i=2;i<=n;i++){q=(LinkList*)malloc(sizeof(LinkList));q->num=i;p->next=q;p=q;}p->next=head;/*使链表尾指向链表头形成循环链表*/returnhead;}voidfun(LinkList*L,intm){inti;LinkList*p,*s,*q;p=L;printf("出列顺序为:");while(p->next!=p){for(i=1;i5、;p=p->next;}printf("%5d",p->num);s=p;q->next=p->next;p=p->next;free(s);}printf("%5d",p->num);}intmain(){LinkList*L;intn,m;n=9;m=5;L=creat(n);fun(L,m);return0;}3、比较一个数组的元素 是否为回文数组#include#includeinthuiwen(charstr[]){inti,len,k=1;len=strlen(str);for(i=0;i6、]!=str[len-i-1]){k=1;break;}}if(k==0)printf("%s不是一个回文数",str);elseprintf("%s是一个回文数",str);return0;}voidmain(){charstr[100]={0};printf("Inputastring:");/*提示输入Inputastring:*/scanf("%s",str);/*scan()函数输入一个字符串:*/huiwen(str);}4、 数组比较(20分)•问题描述: 比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数
7、元素。请编程实现上述比较,并返回比较中发现的不相等元素的个数比如:数组{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[])【输入】int len1:输入被比较数组1的元素个数;int array1[]:输入被