华为校园招聘机考试题大全-招聘资料_第1页
华为校园招聘机考试题大全-招聘资料_第2页
华为校园招聘机考试题大全-招聘资料_第3页
华为校园招聘机考试题大全-招聘资料_第4页
华为校园招聘机考试题大全-招聘资料_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第5028页2021华为校园招聘机考试题总结(厦门大学)1、删除子串#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>intdelete_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);tmep=(char*)malloc(n+1);memset(temp,0x00,n+1);while(*p){memcpy(temp,p,n);if(strcmp(temp,q)==0){}else{}}

count++;memset(temp;0x00,n+1);p=p+n;*t=p++;t++;memset(temp,0x00,n+1);free(temp);returncount;}intmain(){chars[100]={‘\0’};intnum=delete_sub_str(“123abc12de234fg1hi34j123k”,”123”,s);printf(“Thenumberofsub_stris%d\r\n”,num);printf(“Theresultstringis%s\r\n”,s);}2、约瑟夫环是一个数学的应用问题:已知n(1,2,3...n)围坐在一张圆桌周围。从编号为km1m#include<stdlib.h>typedefstructNode{intnum;structNode*next;}LinkList;LinkList*creat(intn){LinkListinti=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;i<m;i++){ q=p;p=p->next;}printf("%5d",p->num);s=p;q->next=p->next;p=p->next;free(s);}printf("%5d\n",p->num);}intmain(){LinkListintn,m;n=9;m=5;L=creat(n);fun(L,m);return0;}3、比较一个数组的元素是否为回文数组#include<stdio.h>#include<string.h>inthuiwen(charstr[]){inti,len,k=1;len=strlen(str);for(i=0;i<len/2;i++){if(str[i]!=str[len-i-1]){k=1;break;}}if(k==0)printf("%s不是一个回文数\n",str);elseprintf("%s是一个回文数\n",str);}voidmain(){charstr[100]={0};inti;intlen;printf("Inputastring:"); /*提示输入Inputastring:*/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_你们pare(intlen1,intarray1[],intlen2,intarray2[])intlen11intarray1[1;intlen22intarray2[2;【输出】无【返回】不相等元素的个数,类型为int示例1)输入:int函数返回:0array1[]={1,3,5},intlen1=3,intarray2[]={77,21,1,3,5},intlen2=52)输入:intarray1[]={1,3,5},intlen1=3,intarray2[]={77,21,1,3,5,7},intlen2=6函数返回:3#include<stdlib.h>#include<stdio.h>#include<string.h>intarray_你们pare(intlen1,intarray1[],intlen2,intarray2[]){intcount=0;for(;len1>=0&&len2>=0;len1--,len2--){if(array1[len1-1]==array2[len2-1]){count++;}}returncount;}intmain(){intresult=0;intarray1[]={1,3,5};intlen1=3;intarray2[]={77,12,1,3,5};intlen2=5;result=array_你们pare(len1,array1, len2,array2); ///result=array_你们pare(len1,array1[], len2,array2[]);不能这样//函数形参中永远只是传得首地址,不能传数组切记切记!!!!!!printf("theresultis%d",result);}5、约瑟夫问题问题描述:输入一个由随机数组成的数列(0),和初始计数值m。从数列首位置开始计数,计数到mm数列尾段,则返回数列首位置继续计数。请编程实现上述计数过程,同时输出数值出列的顺序比如:输入的随机数列为:3,1,2,4,初始计数值m=7,从数列首位置开始计数(数值3所在位置)第一轮计数出列数字为2,计数值更新m=2,出列后数列为3,1,4,从数值4所在位置从新开始计数第二轮计数出列数字为3,计数值更新m=3,出列后数列为1,4,从数值1所在位置开始计数1,计数值更新m=1444,计数过程完成。输出数值出列顺序为: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, 输出:output_array[]={2,3,1,4}////////////循环链表实现//////////////////////#include<stdio.h>#include<stdlib.h>#include<string.h>typedefstructNode{intnum;structnode*next;}node;node*creat(intlen,intinput_array[]){node*h,*s,*p;inti;h=(node*)malloc(sizeof(node));h->num=input_array[0];p=h;for(i=1;i<len;i++){s=(node*)malloc(sizeof(node));s->num=input_array[i];p->next=s;p=s;}p->next=h;return(h);}voidarray_iterate(intlen,intinput_array[],intm){node*q,*p,*s;inti=0,j=0,k;intoutput_array[4];p=creat(len,input_array);while(p->next!=p){for(i=1;i<m;i++){q=p;p=p->next;}m=p->num;printf("%5d",m);output_array[j++]=m;s=p;q->next=p->next;p=p->next;free(s);s=NULL;}m=p->num;printf("%5d\n",m);output_array[j]=p->num;k=j;for(j=0;j<=k;j++){printf("%5d",output_array[j]);}}intmain(){intinput_array[]={3,1,2,4};intlen=4;intm=7;intoutput_array[4];array_iterate(len, input_array,m,output_array);}6、手机号码合法性判断(20分)问题描述:我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:78。特点如下:1、长度13位;2、 以86的国家码打头;3、手机号码的每一位都是数字。请实现手机号码合法性判断的函数要求:1)如果手机号码合法,返回0;12;863;【注】除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。要求实现函数:intverifyMsisdn(char*inMsisdn)【输入】char*inMsisdn,表示输入的手机号码字符串。【输出】无【返回】判断的结果,类型为int。示例输入: inMsisdn=输出:无返回: 1输入: inMsisdn=输出:无返回: 3输入: inMsisdn=输出:无返回: 0#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>#defineLENGTH intverifyMsisdn(char*inMsisdn){char*pchar=NULL;assert(inMsisdn!=NULL);if(LENGTH==strlen(inMsisdn)){if(('8'==*inMsisdn)&&(*(inMsisdn+1)=='6')){while(*inMsisdn!='\0'){}}else

if((*inMsisdn>='0')&&(*inMsisdn<='9'))inMsisdn++;elsereturn2}else

return3;return1;return0;}intmain(){char*pchar=NULL;unsignedcharichar=0;intresult;switch(ichar){case0:pchar="89";break;case1:pchar="1111";break;case2:pchar="86s1234536366";default:break;}result=verifyMsisdn(pchar);printf("resultis%d\n",result);}7、数组比较(20分)问题描述:2上述比较,并返回比较中发现的不相等元素的个数比如:数组{1,3,5}和数组{77,21,1,3,5}按题述要求比较,不相等元素个数为0数组{1,3,5}和数组{77,21,1,3,5,7}按题述要求比较,不相等元素个数为3要求实现函数:intarray_你们pare(intlen1,intarray1[],intlen2,intarray2[])intlen11intarray1[1;intlen22intarray2[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<stdlib.h>#include<stdio.h>#include<string.h>intarray_你们pare(intlen1,intarray1[],intlen2,intarray2[]){intcount=0;for(;len1>=0&&len2>=0;len1--,len2--){if(array1[len1-1]==array2[len2-1]){count++;}}returncount;}intmain(){intresult=0;intarray1[]={1,3,5};intlen1=3;intarray2[]={77,12,1,3,5};intlen2=5;result=array_你们pare(len1,array1,len2,array2);///result=array_你们pare(len1,array1[], len2,array2[]);不能这样//函数形参中永远只是传得首地址,不能传数组 切记切记printf("theresultis%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<stdio.h>/*authorbywanww*time:2021-09-07*/usingnamespacestd;intarray_你们pare(intlen1,intarray1[],intlen2,intarray2[]){if(len1==len2){intcount=0;for(inti=0;i<len1;i++){if(array1[i]!=array2[i])count++;}returncount;}elseif(len1<len2){returnarray_你们pare(len1,array1,len1,array2+len2-len1);}else{returnarray_你们pare(len2,array1+len1-len2,len2,array2);}}voidarray_iterate(intlen,intinput_array[],intm,intoutput_array[]){int*flag=newint[len];memset(flag,0,len*4);inthasout=0; //intstart=0;//开始的下标号intj=0; //while(true){if(flag[start]==0) //当前元素还没出列{j++;if(j==m)//已经计数到m,当前start下标的元素出列{output_array[hasout]=input_array[start];flag[start]=1;//标记当前元素已经出列hasout++;if(hasout==len)break;//所有的元素都已经出列,结束程序//初始化下一轮的数字j=0;m=input_array[start];}}start++;if(start==len)start=0;}delete[]flag;}intcalculate(intlen,char*expStr){struct {charopdata[200];inttop;}opstack;//定义操作符栈opstack.top=-1;inti=0;//遍历字符串的下标intt=0;//当前后缀表达式的长度charch=expStr[i];while(ch!='\0'){switch(ch){case'+':case'-':while(opstack.top!=-1){expStr[t]=opstack.opdata[opstack.top];opstack.top--;t++;}opstack.top++;opstack.opdata[opstack.top]=ch;break;case'*':case'/':while(opstack.top!=-1&&(opstack.opdata[opstack.top]=='*'||opstack.opdata[opstack.top]=='/')){expStr[t]=opstack.opdata[opstack.top];opstack.top--;t++;}}i++;

opstack.top++;opstack.opdata[opstack.top]=ch;break;default:expStr[t]=t++;break;ch=expStr[i];}while(opstack.top!=-1)//将栈中所有的剩余的运算符出栈{expStr[t]=opstack.opdata[opstack.top];opstack.top--;t++;}expStr[t]='\0';struct {intnumeric[200];inttop;}data;data.top=i=0;ch=expStr[i];while(ch!='\0'){if(ch>='0'&&ch<='9'){data.top++;data.numeric[data.top]=ch-'0';}elseif('+'==ch){inttmp=data.numeric[data.top-1] +data.numeric[data.top];data.top--;data.numeric[data.top]=tmp;}elseif('-'==ch){inttmp=data.numeric[data.top-1] -data.numeric[data.top];data.top--;data.numeric[data.top]=tmp;}elseif('*'==ch){inttmp=data.numeric[data.top-1] *data.numeric[data.top];data.top--;data.numeric[data.top]=tmp;}elseif('/'==ch){if(data.numeric[data.top]==0){printf("cannotbezeroofthedivide\n");exit(1);}}i++;

inttmp=data.numeric[data.top-1]/data.numeric[data.top];data.top--;data.numeric[data.top]=tmp;ch=expStr[i];}returndata.numeric[data.top];}voidmain(){intarray1[]={1,3,5};intlen1=3;intarray2[]={77,21,1,3,5,7};intlen2=6;intcount= array_你们pare(sizeof(array1)/sizeof(int),array1,sizeof(array2)/sizeof(int),array2);printf("%d\n",count);printf("*****************************************************\n");intinput_array[]={3,1,2,4};intlen=4;intm=7;int*output_array=newint[sizeof(input_array)/sizeof(int)];array_iterate(4,input_array,7,output_array);for(inti=0;i<sizeof(input_array)/sizeof(int);i++){printf("%d",output_array[i]);}delete[]output_array;printf("\n*****************************************************\n");charexpStr[]="8/3*3";intresult=calculate(strlen(expStr),expStr);printf("%s\n",expStr);printf("%d\n",result);}9、选秀节目打分,分为专家评委和大众评委,score[]judge_type[]score[]1,表示专家评委,judge_type[i]==2,表示大众评委,n众评委的分数先分别取一个平均分(平均分取整),然后,总分=专家评委平均分*0.6+大众评委*0.4,总分取整。如果没有函数接口intcal_score(intscore[],intjudge_type[],intn)#include<stdio.h>#include<string.h>#include<iostream.h>#include<conio.h>#defineN5intcal_score(intscore[],intjudge_type[],intn){intexpert=0;intdazhong=0;intzongfen=0;inti;intnumber=0;for(i=0;i<N;i++){if(judge_type[i]==1){expert=expert+score[i];number++;}elsedazhong=dazhong+score[i];}if(number==N){}else{}

zongfen=(int)(expert/N);expert=(int)(expert/number);dazhong=(int)(dazhong/(N-number));zongfen=int(0.6*expert+0.4*dazhong);returnzongfen;}intmain(){intscore[N];intjudge_type[N];intnumberlast=0;inti;printf("pleaseinputthe%dscore:\n",N);for(i=0;i<N;i++)scanf("%d",&score[i]);printf("pleaseinputthelevel(1:expert,2:dazhong)\n");for(i=0;i<N;i++)scanf("%d",&judge_type[i]);numberlast=cal_score(score,judge_type,N);printf("thelastscoreis%d\n",numberlast);return0;}10input[]noutput[]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<stdio.h>#include<string.h>#include<conio.h>voidsort(intinput[],intn,intoutput[]){inti,j;intk=1;inttemp;intmed;for(i=0;i<n;i++)for(j=0;j<n-i;j++)if(input[j]>input[j+1]){temp=input[j];input[j]=input[j+1];input[j+1]=temp;}if(n%2!=0){for(i=0;i<n;i++)printf("%2d",input[i]);printf("\n");med=(n-1)/2;output[med]=input[n-1];for(i=1;i<=med;i++){output[med-i]=input[n-1-k];output[med+i]=input[n-2-k];k=k+2;}else{

}for(i=0;i<n;i++)printf("%2d",input[i]);printf("\n");med=n/2;output[med]=input[n-1];for(i=1;i<=med-1;i++){output[med-i]=input[n-1-k];output[med+i]=input[n-2-k];k=k+2;}output[0]=input[0];}}intmain(){

for(i=0;i<n;i++)printf("%2d",output[i]);printf("\n");inta[6]={3,6,1,9,7,8};intb[6]={0};for(intprintf("%2d",a[i]);printf("\n");sort(a,6,b);return0;}1150255255task[],长度为n,taskschedulertask[]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}函数接口 voidscheduler(inttask[],intn,intsystem_task[],int#include<stdio.h>#include<string.h>#include<malloc.h>#include<iostream.h>voidscheduler1(inttask[],intn,intsystem_task[],intuser_task[]){inti;intj=0;int*p,*pp,*p_user,*pp_user;intindex=0;intcount,count2;intmin=0;intk=0;p=(int*)malloc(sizeof(int)*n);for(i=0;i<n;i++)p[i]=0;pp=(int*)malloc(sizeof(int)*n);for(i=0;i<n;i++)pp[i]=0;p_user=(int*)malloc(sizeof(int)*n);for(i=0;i<n;i++)p_user[i]=0;pp_user=(int*)malloc(sizeof(int)*n);for(i=0;i<n;i++)pp_user[i]=0;for(i=0;i<n;i++){if(task[i]<50){{system_task[j]=task[i];pp[j]=i;j++;}count=j;}elseif(task[i]<=255){{user_task[k]=task[i];pp_user[k]=i;k++;}count2=k;}elsetask[i]=task[i];}for(i=0;i<count;i++)printf("%3d",system_task[i]);printf("\n");for(i=0;i<count;i++){min=system_task[0];for(j=1;j<count;j++){if(system_task[j]<min){min=system_task[j];p[i]=j;}}system_task[p[i]]=51;}pp[count]=-1;for(i=0;i<count;i++)printf("%3d",pp[p[i]]);printf("%3d\n",pp[count]);/***********************************************************/for(i=0;i<count2;i++)printf("%4d",user_task[i]);printf("\n");for(i=0;i<count2;i++){min=user_task[0];for(j=1;j<count2;j++){if(user_task[j]<min){min=user_task[j];p_user[i]=j;}}user_task[p_user[i]]=256;}pp_user[count2]=-1;for(i=0;i<count2;i++)printf("%4d",pp_user[p_user[i]]);printf("%3d\n",pp_user[count2]);}intmain(){inttask[9]={0,30,155,1,80,300,170,40,99};intsystem_task[9]={0};intuser_task[9]={0};scheduler1(task,9,system_task,user_task);return0;}12、从两个数组的最后一个元素比较两个数组中不同元素的个数,如有array1[5]={77,21,1,3,5},array2[3]={1,3,5},从array1[4]与array2[2]比较开始,到array1[2]与array[0]比较结束。这样得出它们不同的元素个数为0,若array1[6]={77,21,1,3,5,7},那么他们不同的元素为3。函数原型为int你们pare_array(intlen1,intarray1[],intlen2,intarray2[]);其中,len1与len2分别为数组array1[]和array2[]的长度,函数返回值为两个数组不同元素的个数。以下是上题的函数完整实现://diff_num.cpp#include<stdio.h>int你们pare_array(intlen1,intarray1[],intlen2,intarray2[]){inti,t,small,num=0;//把两数组倒置for(i=0;i<len1/2;i++){t=array1[i];array1[i]=array1[len1-i-1];array1[len1-i-1]=t;}for(i=0;i<len2/2;i++){t=array2[i];array2[i]=array2[len2-i-1];array2[len2-i-1]=t;}//输出倒置后的两数组/* for(i=0;i<len1;i++)printf("%dprintf("\n");for(i=0;i<len2;i++)printf("%d",array2[i]);*/ printf("\n");if(len1>len2)small=len2;elsesmall=len1;num=small;for(i=0;i<small;i++){if(array1[i]==array2[i])num--;}printf("num=%d\n",num);returnnum;}voidmain(){intarray1[5]={77,21,1,3,5},array2[3]={1,3,5};intlen1=5,len2=3;你们pare_array(len1,array1,len2,array2);}13答案:#include<stdio.h>intmain(){charstr[20], intlength=0;printf(“Pleaseinputastring:gets(str);p=str;while(*p++){length++;}printf(“Thelengthofstringis%d\n”,length);return0;}14、使用C语言实现字符串中子字符串的替换StrReplace(char*strSrc,char*strFind,char*strReplacestrSrc是待替换的字符串,strReplace“ABCDEFGHIJKLMNOPQRSTUVWZRSTgggABCDEFGHIJKLMNOPQgggUVWZ答案一:#include<stdio.h>#include<string.h>voidStrReplace(char*strSrc,char*strFind,char*strReplace);#defineM100;voidmain(){chars[]="ABCDEFGHIJKLMNOPQRSTUVW你们Z";chars1[]="RST";chars2[]="ggg";StrReplace(s,s1,s2);printf("%s\n",s);}voidStrReplace(char*strSrc,char*strFind,char*strReplace){inti=0;intj;intn=strlen(strSrc);intk=strlen(strFind);for(i=0;i<n;i++){if(*(strSrc+i)==*strFind){for(j=0;j<k;j++){if(*(strSrc+i+j)==*(strFind+j)){*(strSrc+i+j)=*(strReplace+j);}elsecontinue;}}}}答案二:#include<stdio.h>#defineMAX100StrReplace(char*s,char*s1,char*s2){char*p;for(;*s;s++){for(p=s1;*p&&*p!=*s;p++);if(*p)*s=*(p-s1+s2);}}intmain(){chars[MAX]; //s是原字符串chars1[MAX],s2[MAX]; //s1是要替换//s2puts("Pleaseinputthestringfors:");scanf("%s",s);puts("Pleaseinputthestringforscanf("%s",s1);puts("Pleaseinputthestringforscanf("%s",s2);StrReplace(s,s1,s2);puts("Thestringofsafterdisplaceis:");printf("%s\n",s);return0;}答案三:#include<stdio.h>#include<stdlib.h>#include<string.h>#defineM100voidStrReplace(char*strSrc,char*strFind,char*strReplace);intmain(){chars[]="ABCDEFGHIJKLMNOPQRSTUVW你们Z";chars1[]="RST";chars2[]="gggg";StrReplace(s,s1,s2);printf("%s\n",s);return0;}voidStrReplace(char*strSrc,char*strFind,char*strReplace){while(*strSrc!='\0'){if(*strSrc==*strFind){if(strncmp(strSrc,strFind,strlen(strFind))==0){inti=strlen(strFind);intj=strlen(strReplace);printf("i=%d,j=%d\n",i,j);char*q=strSrc+i;printf("*q=%s\n",q);while((*strSrc++=*strReplace++)!=printf("strSrc-1=%s\n",strSrc-1);printf("*q=%s\n",q);}else{

}else{}

while((*strSrc++=*q++)!='\0');strSrc++;strSrc++;}}}15、编写一个程序实现功能:将字符串”ComputerSecience答案:#include<stdio.h>#include<string.h>intmain(){charstr[]=”ComputerScience”;intflag=1;char*p=str;while(*p){if(flag){printf(“%c”,*p);}flag=(flag+1)%2;p++;}printf(“\n”);return0;}16、使用C语言实现字符串中子字符串的替换StrReplace(char*strSrc,char*strFind,char*strReplacestrSrc是待替换的字符串,strReplace“ABCDEFGHIJKLMNOPQRSTUVWZRSTgggABCDEFGHIJKLMNOPQgggUVWZ答案一:#include<stdio.h>#include<string.h>voidStrReplace(char*strSrc,char*strFind,char*strReplace);#defineM100;voidmain(){chars[]="ABCDEFGHIJKLMNOPQRSTUVW你们Z";chars1[]="RST";chars2[]="ggg";StrReplace(s,s1,s2);printf("%s\n",s);}voidStrReplace(char*strSrc,char*strFind,char*strReplace){inti=0;intj;intn=strlen(strSrc);intk=strlen(strFind);for(i=0;i<n;i++){if(*(strSrc+i)==*strFind){for(j=0;j<k;j++){if(*(strSrc+i+j)==*(strFind+j)){*(strSrc+i+j)=*(strReplace+j);}elsecontinue;}}}}答案二:#include<stdio.h>#defineMAX100StrReplace(char*s,char*s1,char*s2){char*p;for(;*s;s++){for(p=s1;*p&&*p!=*s;p++);if(*p)*s=*(p-s1+s2);}}intmain(){chars[MAX]; //s是原字符串chars1[MAX],s2[MAX]; //s1是要替换//s2puts("Pleaseinputthestringfors:");scanf("%s",s);puts("Pleaseinputthestringforscanf("%s",s1);puts("Pleaseinputthestringforscanf("%s",s2);StrReplace(s,s1,s2);puts("Thestringofsafterdisplaceis:");printf("%s\n",s);return0;}答案三:#include<stdio.h>#include<stdlib.h>#include<string.h>#defineM100voidStrReplace(char*strSrc,char*strFind,char*strReplace);intmain(){chars[]="ABCDEFGHIJKLMNOPQRSTUVW你们Z";chars1[]="RST";chars2[]="gggg";StrReplace(s,s1,s2);printf("%s\n",s);return0;}voidStrReplace(char*strSrc,char*strFind,char*strReplace){while(*strSrc!='\0'){if(*strSrc==*strFind){if(strncmp(strSrc,strFind,strlen(strFind))==0){inti=strlen(strFind);intj=strlen(strReplace);printf("i=%d,j=%d\n",i,j);char*q=strSrc+i;printf("*q=%s\n",q);}else{

}else{}

while((*strSrc++=*strReplace++)!='\0');printf("strSrc-1=%s\n",strSrc-1);printf("*q=%s\n",q);while((*strSrc++=*q++)!='\0');strSrc++;strSrc++;}}}17、编写一个程序实现功能:将两个字符串合并为一个字符串并且输出,用指针实现。charstr1[20]={“Hello”},str2[20]={“World”};答案:#include<stdio.h>intmain(){charstr1[20]={“Hello”},str2[20]={“World”};char*p=str1,*q=str2;while(*p)p++;while(*q){*p=p++;q++;}*p=‘\0’;printf(“%s\n”,str1);return0;18、算分数的问题,去掉一个最高分一个最低分,求平均分1.18、算分数的问题,去掉一个最高分一个最低分,求平均分1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.#include<stdio.h>float{avescore(floatscore[],intn)floatfloatintintfloatmin=0;max=0;minindex=0;maxindex=0;sum=0;min=score[0];for(inti=0;i<n;i++)if(score[i]<min){min=score[i];minindex=i;}score[minindex]=0;max=score[0];for(i=0;i<n;i++)if(score[i]>max){max=score[i];maxindex=i;}score[maxindex]=0;for(i=0;i<n;i++)sum+=score[i];sum=sum/(n-2);returnsum;29.}30.voidmain()31.{32. floatscore[6]={70,80,90,98,87,86};floatlastscore;lastscore=avescore(score,6);35.printf("thelastscoreis:%5.2f\n",lastscore);36.37.}运行结果:thelastscoreis:85.7519对一个数组将数组中偶数从大到小排序奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数 若奇数和偶数不等长则把剩下的直接放到数组中。思路:先进行奇偶判断,得到奇数和偶数数组。然后对两数组排序,进行长度判断,最后组织数据。#include<stdio.h>1.#include<malloc.h>2.3.voidjiou(inta[],int4.{int*p1;int*p2;inti,j;intk=0;intkk=0;intcount1=0;intcount2=0;inttemp;inttemp2;intm=0;p1=(int*)malloc(sizeof(int)*n);p2=(int*)malloc(sizeof(int)*n);17. for(i=0;i<n;i++)18. {19. p1[i]=0;20. p2[i]=0;21. }22.23. for(i=0;i<n;i++)24. {25.26. if((a[i]%2)!=0)27. {p2[kk++]=a[i];}28. else29. {p1[k++]=a[i];}30. }count1=k;33.34. for(i=0;i<count2;i++)35. printf("%3d",p2[i]);36. 37.38. for(i=0;i<count2;i++)39. for(j=0;j<count2-1-i;j++)40. if(p2[j]>p2[j+1])41. {temp2=p2[j];p2[j]=p2[j+1];p2[j+1]=temp2;}42. for(i=0;i<count2;i++)43. printf("%3d",p2[i]);44. printf("\n");45.46. for(i=0;i<count1;i++)47. printf("%3d",p1[i]);48. printf("\n");49.50.for(i=0;i<count1;i++)for(j=0;j<count1-i;j++)53. if(p1[j]<p1[j+1])54. {temp=p1[j];p1[j]=p1[j+1];p1[j+1]=temp;}55. for(i=0;i<count1;i++)56. printf("%3d",p1[i]);57. printf("\n");58.59.60.61. if(count1>count2)62.63. {64. for(i=0;i<count2;i++)65. {66. a[i+m]=p2[i];67. a[i+1+m]=p1[i];68. m=m+1;69. }for(i=0;i<count1-count2;i++)a[2*count2+i]=p1[i+count2];73. }74. else75. {76. for(i=0;i<count1;i++)77. {78. a[i+m]=p2[i];79. a[i+1+m]=p1[i];80. m=m+1;81.82. }for(i=0;i<count2-count1;i++)a[2*count1+i]=p2[i+count1];86. }87. for(i=0;i<n;i++)88. printf("%3d",a[i]);89. printf("%\n");90.91.}92.voidmain()93.{94. inta[10]={2,3,14,6,2,15,12,14,4,11};95. 96.97.运行结果:315113111521462121441414126 42231411141512642220、简单四则运算问题描述:输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的注: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<stdio.h>/*authorbywanww*time:2021-09-07*/usingnamespacestd;intarray_你们pare(intlen1,intarray1[],intlen2,intarray2[]){if(len1==len2){intcount=0;for(inti=0;i<len1;i++){if(array1[i]!=array2[i])count++;}returncount;}elseif(len1<len2){returnarray_你们pare(len1,array1,len1,array2+len2-len1);}else{returnarray_你们pare(len2,array1+len1-len2,len2,array2);}}voidarray_iterate(intlen,intinput_array[],intm,intoutput_array[]){int*flag=newint[len];memset(flag,0,len*4);inthasout=0; //intstart=0;//开始的下标号intj=0; //while(true){if(flag[start]==0) //当前元素还没出列{j++;if(j==m)//已经计数到m,当前start下标的元素出列{output_array[hasout]=input_array[start];flag[start]=1;//标记当前元素已经出列hasout++;if(hasout==len)break;//所有的元素都已经出列,结束程序//初始化下一轮的数字j=0;m=input_array[start];}}start++;if(start==len)start=0;}delete[]flag;}intcalculate(intlen,char*expStr){struct {charopdata[200];inttop;}opstack;//定义操作符栈opstack.top=-1;inti=0;//遍历字符串的下标intt=0;//当前后缀表达式的长度charch=expStr[i];while(ch!='\0'){switch(ch){case'+':case'-':while(opstack.top!=-1){expStr[t]=opstack.opdata[opstack.top];opstack.top--;t++;}opstack.top++;opstack.opdata[opstack.top]=ch;break;case'*':case'/':while(opstack.top!=-1&&(opstack.opdata[opstack.top]=='*'||opstack.opdata[opstack.top]=='/')){expStr[t]=opstack.opdata[opstack.top];opstack.top--;t++;}}i++;

opstack.top++;opstack.opdata[opstack.top]=ch;break;default:expStr[t]=t++;break;ch=expStr[i];}while(opstack.top!=-1)//将栈中所有的剩余的运算符出栈{expStr[t]=opstack.opdata[opstack.top];opstack.top--;t++;}expStr[t]='\0';struct {intnumeric[200];inttop;}data;data.top=i=0;ch=expStr[i];while(ch!='\0'){if(ch>='0'&&ch<='9'){data.top++;data.numeric[data.top]=ch-'0';}elseif('+'==ch){inttmp=data.numeric[data.top-1] +data.numeric[data.top];data.top--;data.numeric[data.top]=tmp;}elseif('-'==ch){inttmp=data.numeric[data.top-1] -data.numeric[data.top];data.top--;data.numeric[data.top]=tmp;}elseif('*'==ch){inttmp=data.numeric[data.top-1] *data.numeric[data.top];data.top--;data.numeric[data.top]=tmp;}elseif('/'==ch){if(data.numeric[data.top]==0){printf("cannotbezeroofthedivide\n");exit(1);}}i++;

inttmp=data.numeric[data.top-1]/data.numeric[data.top];data.top--;data.numeric[data.top]=tmp;ch=expStr[i];}returndata.numeric[data.top];}voidmain(){intarray1[]={1,3,5};intlen1=3;intarray2[]={77,21,1,3,5,7};intlen2=6;intcount= array_你们pare(sizeof(array1)/sizeof(int),array1,sizeof(array2)/sizeof(int),array2);printf("%d\n",count);printf("*****************************************************\n");intinput_array[]={3,1,2,4};intlen=4;intm=7;int*output_array=newint[sizeof(input_array)/sizeof(int)];array_iterate(4,input_array,7,output_array);for(inti=0;i<sizeof(input_array)/sizeof(int);i++){printf("%d",output_array[i]);}delete[]output_array;printf("\n*****************************************************\n");charexpStr[]="8/3*3";intresult=calculate(strlen(expStr),expStr);printf("%s\n",expStr);printf("%d\n",result);}21、选秀节目打分分为专家评委和大众评委数组里面存储每个评委打的分数,judge_type[]里存储与score[]数组对应评委类别,judge_type[i]==1,表示专家评委,judge_type[i]==2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分=专家评委平均分 * 0.6+大众评委*0.4,总分取整。如果没有大众评委,则总分=专家评委平均分,总分取整。函数最终返回选手得分。函数接口 intcal_score(intscore[],intjudge_type[],int#include<stdio.h>#include<string.h>#include<iostream.h>#include<conio.h>#defineN5intcal_score(intscore[],intjudge_type[],intn){intexpert=0;intdazhong=0;intzongfen=0;inti;intnumber=0;for(i=0;i<N;i++){if(judge_type[i]==1){expert=expert+score[i];number++;}elsedazhong=dazhong+score[i];}if(number==N){}else{}

zongfen=(int)(expert/N);expert=(int)(expert/number);dazhong=(int)(dazhong/(N-number));zongfen=int(0.6*expert+0.4*dazhong);returnzongfen;}intmain(){intscore[N];intjudge_type[N];intnumberlast=0;inti;printf("pleaseinputthe%dscore:\n",N);for(i=0;i<N;i++)scanf("%d",&score[i]);printf("pleaseinputthelevel(1:expert,2:dazhong)\n");for(i=0;i<N;i++)scanf("%d",&judge_t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论