华为最新笔试题编程题及答案Word格式文档下载.docx
- 文档编号:364691
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:37
- 大小:29.26KB
华为最新笔试题编程题及答案Word格式文档下载.docx
《华为最新笔试题编程题及答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《华为最新笔试题编程题及答案Word格式文档下载.docx(37页珍藏版)》请在冰点文库上搜索。
n;
i++)
if(*(strSrc+i)==*strFind)
for(j=0;
j<
k;
j++)
if(*(strSrc+i+j)==*(strFind+j))
*(strSrc+i+j)=*(strReplace+j);
}
elsecontinue;
编写一个程序实现功能:
将字符串”ComputerSecience”赋给一个字符数组,然后从第一个字母开始间隔的输出该串,用指针完成。
charstr[]=”ComputerScience”;
intflag=1;
char*p=str;
while(*p)
if(flag)
{
printf(“%c”,*p);
flag=(flag+1)%2;
p++;
printf(“\n”);
return0;
将两个字符串合并为一个字符串并且输出,用指针实现。
charstr1[20]={“Hello”},str2[20]={“World”};
char*p=str1,*q=str2;
while(*p)p++;
while(*q)
*p=*q;
q++;
*p=‘\0’;
printf(“%s\n”,str1);
以下函数的功能是用递归的方法计算x的n阶勒让德多项式的值。
已有调用语句p(n,x);
编写函数实现功能。
递归公式如下:
floatp(intx,intn)
floatt,t1,t2;
if(n==0)return1;
elseif(n==1)returnx;
else
t1=(2*n-1)*x*p(x,(n-1));
t2=(n-1)*p(x,(n-2));
t=(t1-t2)/n;
returnt;
intx,n;
printf(“inputtwoint(xandn):
”);
scanf(“%d%d”,&
x,&
n);
printf(“%.2f\n”,p(x,n));
给主函数传递参数实现echo功能:
#incldue<
intmain(intargc,char*argv[])
{inti=1;
while(i<
argc)
{printf(“%s”,argv[i]);
i++;
printf(“\n”);
1.数组比较(20分)
问题描述:
比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。
请编程实现上述比较,并返回比较中发现的不相等元素的个数,比如:
数组{1,3,5}和数组{77,21,1,3,5}按题述要求比较,不相等元素个数为0
数组{1,3,5}和数组{77,21,1,3,5,7}按题述要求比较,不相等元素个数为3
•要求实现函数:
int
array_compare(int
len1,
array1[],
len2,
array2[])
【输入】int
len1:
输入被比较数组1的元素个数;
array1[]:
输入被比较数组1;
len2:
输入被比较数组2的元素个数;
array2[]:
输入被比较数组2;
【输出】无
【返回】不相等元素的个数,类型为int
•示例
1)输入:
array1[]
=
{1,3,5},int
len1
3,int
array2[]
{77,21,1,3,5},int
len2
5
函数返回:
3
2)输入:
{77,21,1,3,5,7},int
6
#include<
stdlib.h>
intarray_compare(intlen1,intarray1[],intlen2,intarray2[])
intcount=0;
for(;
len1>
=0&
&
len2>
=0;
len1--,len2--)
if(array1[len1-1]==array2[len2-1])
{
count++;
}
returncount;
intresult=0;
intarray1[]={1,3,5};
intlen1=3;
intarray2[]={77,12,1,3,5};
intlen2=5;
result=array_compare(len1,array1,len2,array2);
printf("
theresultis%d"
result);
约瑟夫环是一个数学的应用问题:
已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。
从编号为k的人开始报数,数到m的那个人出列;
他的下一个人又从1开始报数,数到m的那个人又出列;
依此规律重复下去,直到圆桌周围的人全部出列。
typedefstructNode
{
intnum;
structNode*next;
}LinkList;
LinkList*creat(intn)
LinkList*p,*q,*head;
inti=1;
p=(LinkList*)malloc(sizeof(LinkList));
p->
num=i;
head=p;
for(i=2;
=n;
q=(LinkList*)malloc(sizeof(LinkList));
/*Malloc()向系统申请分配指定size个字节的内存空间。
返回类型是void*类型。
void*表示未确定类型的指针。
C,C++规定,void*类型可以强制转换为任何其它类型的指针。
*/
q->
next=q;
p=q;
next=head;
/*使链表尾指向链表头形成循环链表*/
returnhead;
voidfun(LinkList*L,intm)
inti;
LinkList*p,*s,*q;
p=L;
出列顺序为:
"
);
while(p->
next!
=p)
for(i=1;
m;
i++)/*从1开始*/
{q=p;
p=p->
next;
}
printf("
%5d"
p->
num);
s=p;
q->
next=p->
p=p->
/*使p指向新的起点*/
free(s);
/*free()与malloc()函数配对使用,释放malloc函数申请的动态内存*/
%5d\n"
LinkList*L;
intn,m;
n=9;
m=5;
L=creat(n);
fun(L,m);
手机号码合法性判断(20分)
我国大陆运营商的手机号码标准格式为:
国家码+手机号码,例如:
8613912345678。
特点如下:
1、长度13位;
2、以86的国家码打头;
3、手机号码的每一位都是数字。
请实现手机号码合法性判断的函数要求:
1)如果手机号码合法,返回0;
2)如果手机号码长度不合法,返回1
3)如果手机号码中包含非数字的字符,返回2;
4)如果手机号码不是以86打头的,返回3;
【注】除成功的情况外,以上其他合法性判断的优先级依次降低。
也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。
要求实现函数:
intsintverifyMsisdn(char*inMsisdn)
【输入】char*inMsisdn,表示输入的手机号码字符串。
【输出】无
【返回】判断的结果,类型为int。
示例
输入:
inMsisdn=“869123456789“
输出:
无
返回:
1
inMsisdn=“88139123456789“
3
inMsisdn=“86139123456789“
0
assert.h>
#defineLENGTH13
intverifyMsisdn(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
return2;
}
elsereturn3;
elsereturn1;
char*pchar=NULL;
unsignedcharichar=3;
intresult;
switch(ichar)
case0:
pchar="
8612345363789"
break;
case1:
861111111111111"
case2:
86s1234536366"
break;
case3:
1392222222222"
default:
break;
result=verifyMsisdn(pchar);
resultis%d\n"
result);
约瑟夫问题问题描述:
输入一个由随机数组成的数列(数列中每个数均是大于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。
void
array_iterate(int
len,
input_array[],
m,
output_array[])
len:
输入数列的长度;
intput_array[]:
输入的初始数列;
m:
初始计数值
【输出】int
output_array[]:
输出的数值出列顺序
【返回】无
示例
input_array[]
{3,1,2,4},int
len
4,
m=7
output_array[]
{2,3,1,4}
LinkList*creat(intlen,intinput_array[])
LinkList*h,*s,*p;
h=(LinkList*)malloc(sizeof(LinkList));
h->
num=input_array[0];
p=h;
for(i=1;
len;
s=(LinkList*)malloc(sizeof(LinkList));
s->
num=input_array[i];
p->
next=s;
p=s;
next=h;
return(h);
voidarray_iterate(intlen,intinput_array[],intm)
LinkList*q,*p,*s;
inti=0,j=0,k;
intoutput_array[4];
p=creat(len,input_array);
q=p;
m=p->
num;
m);
output_array[j++]=m;
s=NULL;
output_array[j]=p->
k=j;
for(j=0;
j<
=k;
j++)
printf("
output_array[j]);
\n"
intinput_array[]={3,1,2,4};
intlen=4;
intm=7;
array_iterate(len,input_array,m);
比较一个数组的元素
是否为回文数组
voidhuiwen(charstr[])
inti,len,k=1;
len=strlen(str);
len/2;
if(str[i]!
=str[len-i-1])
k=1;
break;
if(k==0)
%s不是一个回文数\n"
str);
else
%s是一个回文数\n"
main()
charstr[100]={0};
intlen;
Inputastring:
/*提示输入Inputastring:
scanf("
%s"
str);
/*scan()函数输入一个字符串:
huiwen(str);
选秀节目打分,分为专家评委和大众评委,score[]数组里面存储每个评委打的分数,
judge_type[]里存储与score[]数组对应的评委类别,judge_type[i]==1,表示专家评委,
judge_type[i]==2,表示大众评委,n表示评委总数。
打分规则如下:
专家评委和大众评委
的分数先分别取一个平均分(平均分取整),然后,总分=专家评委平均分*0.6+大众
评委*0.4,总分取整。
如果没有大众评委,则总分=专家评委平均分,总分取整。
函数
最终返回选手得分。
函数接口intcal_score(intscore[],intjudge_type[],intn)
#include"
iostream"
usingnamespacestd;
intcal_score(intscore[],intjudge_type[],intn)
if(NULL==score||NULL==judge_type||0==n)return0;
intsum=0;
intsum1=0,count1=0;
intsum2=0,count2=0;
for(inti=0;
if(judge_type[i]==1)
{
sum1=sum1+score[i];
count1++;
}
else
sum2=sum2+score[i];
count2++;
}
if(0==count2)sum=sum1/count1;
elsesum=(sum1/count1)*0.6+(sum2/count2)*0.4;
returnsum;
voidmain()
intscore[3]={12,13,15};
intjudge_type[3]={1,1,2};
%d\n"
cal_score(score,judge_type,3));
给定一个数组input[],如果数组长度n为奇数,则将数组中最大的元素放到output[]数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到output[]数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。
例如:
input[]={3,6,1,9,7}output[]={3,7,9,6,
input[]={3,6,1,9,7,8}output[]={1,6,8,9,7,3}
函数接口voidsort(intinput[],intn,intoutput[])
voidbubblesort(intdata[],intn)
inttemp=0;
i++)
for(intj=i+1;
j++)
if(data[i]<
data[j])
temp=data[i];
data[i]=data[j];
data[j]=temp;
}
voidsort(intinput[],intn,intoutput[])
int*sort_input=newint[n];
i++)
sort_input[i]=input[i];
bubblesort(sort_input,n);
if(1==n%2)
intmid=n/2;
intk=0;
output[mid]=sort_input[k++];
for(intj=1;
=n/2;
output[mid-j]=sort_input[k++];
output[mid+j]=sort_input[k++];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华为 最新 笔试 编程 答案