




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华为校园招聘机考试题总结(软件)1、删除子串,只要是原串中有相同的子串就删掉,不管有多少个,返回子串个数。#include #include #include #include int delete_sub_str(const char *str,const char *sub_str,char *result)assert(str != NULL & sub_str != NULL);const char *p,*q;char *t,*temp;p = str;q = sub_str;t = result;int n,count = 0;n = strlen(q);tmep = (char *)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);return count;int main()char s100 = 0;int num = delete_sub_str(“123abc12de234fg1hi34j123k”,”123”,s);printf(“The number of sub_str is %drn”,num);printf(“The result string is %srn”,s);2、约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3.n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。#include#includetypedef struct Nodeint num;struct Node *next;LinkList;LinkList *creat(int n)LinkList *p,*q,*head;int i=1; p=(LinkList *)malloc(sizeof(LinkList); p-num=i;head=p; for(i=2;inum=i; p-next=q; p=q; p-next=head; /*使链表尾指向链表头 形成循环链表*/ return head;void fun(LinkList *L,int m)int i;LinkList *p,*s,*q;p=L;printf(出列顺序为:);while(p-next!=p)for(i=1;inext;printf(%5d,p-num);s=p;q-next=p-next;p=p-next;free(s);printf(%5dn,p-num);int main()LinkList *L;int n, m;n=9;m=5;L=creat(n);fun(L,m);return 0;3、比较一个数组的元素是否为回文数组#include #include int huiwen(char str)int i,len,k=1;len=strlen(str);for(i=0;ilen/2;i+)if(stri!=strlen-i-1)k=1;break;if(k=0) printf(%s 不是一个回文数n,str);elseprintf(%s 是一个回文数n,str);void main() char str100 = 0; int i;int len;printf(Input a string:); /*提示输入Input a string:*/scanf(%s, str); /*scan()函数输入一个字符串:*/huiwen(str);4、数组比较(20分) 问题描述:比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果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,intarray2)【输入】 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#include#includeint array_compare(int len1, int array1, int len2, int array2)int count=0;for( ;len1=0&len2=0 ;len1-,len2-)if(array1len1-1=array2len2-1) count+;return count;int main()int result=0;int array1=1,3,5;int len1=3;int array2=77,12,1,3,5;int len2=5;result=array_compare( len1, array1, len2, array2); /result=array_compare( len1, array1, len2, array2);不能这样 / 函数形参中永远只是传得首地址,不能传数组 切记切记!printf(the result is %d, result);5、约瑟夫问题 问题描述:输入一个由随机数组成的数列(数列中每个数均是大于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。 要求实现函数: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/循环链表实现/#include#include#includetypedef struct Nodeint num;struct node *next; node;node *creat(int len , int input_array)node *h,*s,*p;int i;h=(node*)malloc(sizeof(node);h-num=input_array0;p=h;for(i=1;inum=input_arrayi; p-next=s; p=s; p-next=h; return (h);void array_iterate(int len, int input_array, int m)node *q,*p,*s;int i=0,j=0,k;int output_array4;p=creat(len,input_array);while(p-next!=p)for(i=1;inext;m=p-num; printf(%5d,m);output_arrayj+=m;s=p;q-next=p-next;p=p-next;free(s);s=NULL;m=p-num; printf(%5dn,m);output_arrayj=p-num;k=j;for(j=0 ; j=k; j+)printf(%5d,output_arrayj);int main()int input_array=3,1,2,4;int len=4;int m=7;int output_array4;array_iterate(len, input_array, m, output_array);6、 手机号码合法性判断(20分)l 问题描述:我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下:1、 长度13位;2、 以86的国家码打头;3、 手机号码的每一位都是数字。 请实现手机号码合法性判断的函数要求:1) 如果手机号码合法,返回0;2) 如果手机号码长度不合法,返回13) 如果手机号码中包含非数字的字符,返回2;4) 如果手机号码不是以86打头的,返回3;【注】除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。l 要求实现函数:int verifyMsisdn(char* inMsisdn)【输入】 char* inMsisdn,表示输入的手机号码字符串。【输出】 无【返回】 判断的结果,类型为int。l 示例输入: inMsisdn = “869123456789“输出: 无返回: 1输入: inMsisdn = “88139123456789“输出: 无返回: 3输入: inMsisdn = “86139123456789“输出: 无返回: 0#include#include#include#include#define LENGTH 13int verifyMsisdn(char *inMsisdn)char *pchar=NULL;assert(inMsisdn!=NULL);if(LENGTH=strlen(inMsisdn)if(8=*inMsisdn)&(*(inMsisdn+1)=6)while(*inMsisdn!=0)if(*inMsisdn=0)&(*inMsisdn=9)inMsisdn+;else return 2 ;elsereturn 3;elsereturn 1;return 0;int main()char *pchar=NULL;unsigned char ichar=0;int result;switch(ichar)case 0:pchar=8612345363789;break;case 1:pchar=861111111111111;break;case 2:pchar=86s1234536366; break;default: break; result =verifyMsisdn(pchar); printf(result is %dn,result);7、数组比较(20分) 问题描述:比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果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,intarray2)【输入】 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函数返回:3#include#include#includeint array_compare(int len1, int array1, int len2, int array2)int count=0;for( ;len1=0&len2=0 ;len1-,len2-)if(array1len1-1=array2len2-1) count+;return count;int main()int result=0;int array1=1,3,5;int len1=3;int array2=77,12,1,3,5;int len2=5;result=array_compare(len1, array1, len2, array2); /result=array_compare( len1, array1, len2, array2);不能这样/ 函数形参中永远只是传得首地址,不能传数组 切记切记!printf(the result is %d, result);8、简单四则运算 问题描述:输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值注: 1、表达式只含+,-,*,/四则运算符,不含括号2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况3、要考虑加减乘除按通常四则运算规定的计算优先级4、除法用整数除法,即仅保留除法运算结果的整数部分。比如8/3=2。输入表达式保证无0作为除数情况发生5、输入字符串一定是符合题意合法的表达式,其中只包括数字字符和四则运算符字符,除此之外不含其它任何字符,不会出现计算溢出情况 要求实现函数:intcalculate(intlen,char*expStr)【输入】 intlen:字符串长度;char*expStr:表达式字符串;【输出】 无【返回】 计算结果 示例1) 输入:char*expStr=“1+4*5-8/3”函数返回:192) 输入:char*expStr=“8/3*3”函数返回:6 #include /* * author by wanww * time: 2011-09-07 */using namespace std;int array_compare(int len1, int array1, int len2, int array2) if(len1 = len2) int count = 0;for (int i=0;ilen1;i+)if(array1i!=array2i) count+;return count; else if(len1=0 & ch = 9 )data.top+;data.numericdata.top = ch-0; else if(+ = ch)int tmp = data.numericdata.top-1 + data.numericdata.top;data.top-;data.numericdata.top = tmp;else if(- = ch)int tmp = data.numericdata.top-1 - data.numericdata.top;data.top-;data.numericdata.top = tmp;else if(* = ch)int tmp = data.numericdata.top-1 * data.numericdata.top;data.top-;data.numericdata.top = tmp;else if(/ = ch) if(data.numericdata.top = 0)printf(cannot be zero of the dividen);exit(1);int tmp = data.numericdata.top-1 / data.numericdata.top;data.top-;data.numericdata.top = tmp;i+;ch = expStri; return data.numericdata.top;void main()int array1 = 1,3,5;int len1 = 3;int array2 = 77,21,1,3,5,7;int len2 = 6;int count =array_compare(sizeof(array1)/sizeof(int),array1,sizeof(array2)/sizeof(int),array2);printf(%dn,count); printf(*n);int input_array = 3,1,2,4;int len = 4;int m=7;int * output_array = new intsizeof(input_array)/sizeof(int);array_iterate(4,input_array,7,output_array); for (int i=0;isizeof(input_array)/sizeof(int);i+)printf(%d ,output_arrayi); delete output_array;printf(n*n);char expStr = 8/3*3; int result = calculate(strlen(expStr),expStr);printf(%sn,expStr);printf(%dn,result);9、选秀节目打分,分为专家评委和大众评委,score 数组里面存储每个评委打的分数,judge_type 里存储与 score 数组对应的评委类别,judge_typei = 1,表示专家评委,judge_typei = 2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分 = 专家评委平均分 *0.6 + 大众评委 * 0.4,总分取整。如果没有大众评委,则 总分 = 专家评委平均分,总分取整。函数最终返回选手得分。函数接口 int cal_score(int score, int judge_type, int n)#include#include#include#include#define N 5int cal_score(int score, int judge_type, int n) int expert=0; int dazhong=0;int zongfen=0;int i;int number=0;for(i=0;iN;i+)if(judge_typei=1)expert=expert+scorei;number+;else dazhong=dazhong+scorei;if(number=N)zongfen=(int)(expert/N);else expert=(int)(expert/number);dazhong=(int)(dazhong/(N-number);zongfen=int(0.6*expert+0.4*dazhong);return zongfen;int main()int scoreN;int judge_typeN;int numberlast=0;int i;printf(please input the %d score:n,N);for(i=0;iN;i+)scanf(%d,&scorei);printf(please input the level(1:expert,2:dazhong)n);for(i=0;iN;i+)scanf(%d,&judge_typei);numberlast=cal_score(score,judge_type,N);printf(the last score is %dn,numberlast);return 0;10、给定一个数组input ,如果数组长度n为奇数,则将数组中最大的元素放到 output 数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。 例如:input = 3, 6, 1, 9, 7 output = 3, 7, 9, 6, 1; input = 3, 6, 1, 9, 7, 8 output =1, 6, 8, 9, 7, 3#include#include#includevoid sort(int input, int n, int output)int i,j;int k=1;int temp;int med;for(i=0;in;i+)for(j=0;jinputj+1)temp=inputj;inputj=inputj+1;inputj+1=temp;if(n%2!=0)for(i=0;in;i+)printf(%2d,inputi);printf(n);med=(n-1)/2;outputmed=inputn-1;for(i=1;i=med;i+)outputmed-i=inputn-1-k;outputmed+i=inputn-2-k;k=k+2;elsefor(i=0;in;i+)printf(%2d,inputi);printf(n);med=n/2;outputmed=inputn-1;for(i=1;i=med-1;i+)outputmed-i=inputn-1-k;outputmed+i=inputn-2-k;k=k+2;output0=input0;for(i=0;in;i+)printf(%2d,outputi);printf(n);int main()int a6=3,6,1,9,7,8;int b6=0;for(int i=0;i6;i+)printf(%2d,ai);printf(n);sort(a,6,b);return 0;11、操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 = 50且 = 255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task,长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。函数scheduler实现如下功能,将task 中的任务按照系统任务、用户任务依次存放到 system_task 数组和 user_task 数组中(数组中元素的值是任务在task 数组中的下标),并且优先级高的任务排在前面,数组元素为-1表示结束。 例如:task = 0, 30, 155, 1, 80, 300, 170, 40, 99 system_task = 0, 3, 1, 7, -1 user_task = 4, 8, 2, 6, -1函数接口 void scheduler(int task, int n, int system_task, int user_task)#include#include#include#includevoid scheduler1(int task, int n, int system_task, int user_task)int i;int j=0;int *p,*pp,*p_user,*pp_user;int index=0;int count,count2;int min=0;int k=0;p=(int*)malloc(sizeof(int)*n);for(i=0;in;i+)pi=0;pp=(int*)malloc(sizeof(int)*n);for(i=0;in;i+)ppi=0;p_user=(int*)malloc(sizeof(int)*n);for(i=0;in;i+)p_useri=0;pp_user=(int*)malloc(sizeof(int)*n);for(i=0;in;i+)pp_useri=0;for(i=0;in;i+)if(taski50)system_taskj=taski;ppj=i;j+;count=j;else if(taski=255)user_taskk=taski;pp_userk=i;k+;count2=k;else taski=taski;for(i=0;icount;i+)printf(%3d,system_taski);printf(n);for(i=0;icount;i+)min=system_task0;for(j=1;jcount;j+)if(system_taskjmin)min=system_taskj;pi=j;system_taskpi=51; ppcount=-1;for(i=0;icount;i+)printf(%3d,pppi);printf(%3dn,ppcount);/*/for(i=0;icount2;i+)printf(%4d,user_taski);printf(n);for(i=0;icount2;i+)min=user_task0;for(j=1;jcount2;j+)if(user_taskjmin)min=user_taskj;p_useri=j;user_taskp_useri=256; pp_usercount2=-1;for(i=0;icount2;i+)printf(%4d,pp_userp_useri);printf(%3dn,pp_usercount2);int main()int task9=0, 30, 155, 1, 80, 300,170, 40, 99;int system_task9=0;int user_task9=0;scheduler1(task,9,system_task,user_task);return 0;12、 从两个数组的最后一个元素比较两个数组中不同元素的个数,如有array15=77,21,1,3,5, array23=1,3,5,从array14与array22比较开始,到array12与array0比较结束。这样得出它们不同的元素个数为0,若array16=77,21,1,3,5,7,那么他们不同的元素为3。函数原型为 int compare_array( int len1, int array1, int len2, int array2 );其中,len1与len2分别为数组array1和array2的长度,函数返回值为两个数组不同元素的个数。以下是上题的函数完整实现:/diff_num.cpp#includeint compare_array(int len1,int array1,int len2,int array2)int i,t,small,num=0;/把两数组倒置for(i=0;ilen1/2;i+)t=array1i;array1i=array1len1-i-1;array1l
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 航空航天产业股权并购与航天器研发协议
- 《哈姆莱特(节选)》课件 统编版高中语文必修下册
- 教师招聘之《幼儿教师招聘》考前冲刺练习题及参考答案详解
- 教师招聘之《小学教师招聘》练习题含完整答案详解【历年真题】
- 绿色信贷对中国银行盈利能力的影响研究
- 教师招聘之《小学教师招聘》全真模拟模拟题及完整答案详解(有一套)
- 内蒙古呼伦贝尔农垦牙克石莫拐免渡河农牧场有限公司招聘笔试题库附答案详解(完整版)
- 2025卫生院医保业务流程
- 2024年呼伦贝尔农垦集团有限公司人员招聘笔试备考及答案详解(新)
- 2025年教师招聘之《幼儿教师招聘》综合提升练习题附参考答案详解(黄金题型)
- Rexroth (博世力士乐)VFC 3610系列变频器使用说明书
- ×××学校“学校学生资助管理机构成立文件”
- 动词过去式和过去分词的变化规则练习及答案
- 第四章 土壤污染调查与风险评价
- GB/T 9877-2008液压传动旋转轴唇形密封圈设计规范
- GB/T 12670-2008聚丙烯(PP)树脂
- 共享服务中心(HRSSC)课件
- 工程结构检测鉴定与加固第1章工程结构检测鉴定与加固概论课件
- 高中心理健康课程《人际关系-寝室篇》课件
- 数字色彩课件
- 一年级上册科学课件-第一单元 走近科学 复习课件-鄂教版(共23张PPT)
评论
0/150
提交评论