华为机试题及答案.docx

上传人:b****2 文档编号:2940562 上传时间:2023-05-05 格式:DOCX 页数:15 大小:17.63KB
下载 相关 举报
华为机试题及答案.docx_第1页
第1页 / 共15页
华为机试题及答案.docx_第2页
第2页 / 共15页
华为机试题及答案.docx_第3页
第3页 / 共15页
华为机试题及答案.docx_第4页
第4页 / 共15页
华为机试题及答案.docx_第5页
第5页 / 共15页
华为机试题及答案.docx_第6页
第6页 / 共15页
华为机试题及答案.docx_第7页
第7页 / 共15页
华为机试题及答案.docx_第8页
第8页 / 共15页
华为机试题及答案.docx_第9页
第9页 / 共15页
华为机试题及答案.docx_第10页
第10页 / 共15页
华为机试题及答案.docx_第11页
第11页 / 共15页
华为机试题及答案.docx_第12页
第12页 / 共15页
华为机试题及答案.docx_第13页
第13页 / 共15页
华为机试题及答案.docx_第14页
第14页 / 共15页
华为机试题及答案.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

华为机试题及答案.docx

《华为机试题及答案.docx》由会员分享,可在线阅读,更多相关《华为机试题及答案.docx(15页珍藏版)》请在冰点文库上搜索。

华为机试题及答案.docx

华为机试题及答案

华为机试题及答案

1、通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格

分隔。

请编写一个程序,自动分离出各个子串,并使用','将其分隔,并且在

最后也补充一个','并将子串存储。

测试:

输入:

“abcdefghid”输出:

“abc,def,gh,i,d,”

#include<>

char*pInputStr,longlInputLen,char

#include<>voidDivideString(const

*pOutputStr)

{

inti=0,j=0;

intflag=0;

while(pInputStr[i]=='')

{

i++;

}for(;i

{

if(pInputStr[i]=='')

{

flag=1;continue;

}

if(flag==1)

{

flag=0;

pOutputStr[j++]=',';

}

pOutputStr[j++]=pInputStr[i];

}

pOutputStr[j++]=',';

pOutputStr[j]='\0';

}

intmain()

{

chartest[40];

charre[40];

gets(test);

DivideString(test,strlen(test),re);

printf("%s",re);

return0;

}

2、将输入的字符串(字符串仅包含小写字母‘a'到‘z'),按照如下规则,

循环转换后输出:

a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。

例如:

aa转换为bc,zz转换为ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。

测试:

输入:

char*input="abbbcd"输出:

char*output="bcdcde"

#include<>

#include<>

voidconvert(char*input,char*output)

{

inti;

for(i=0;i

if(i==0)

{

output[i]=input[i]+1;if(output[i]==123)

{

output[i]=97;

}

}

else

{

if(input[i]!

=input[i-1])

{

output[i]=input[i]+1;

if(output[i]==123)

{

output[i]=97;

}

}

else

{

output[i]=input[i]+2;

if(output[i]==123)

{

output[i]=97;

}

if(output[i]==124)

output[i]=98;

}

output[i+1]='\0';

}

intmain()

{

charin[20]={"asdfzzxzxz"};

charon[20];

//gets(in);

convert(in,on);

printf("%s",on);

return0;

}

3、通过键盘输入一串小写字母(a~z)组成的字符串。

请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。

测试:

输入:

“afafafaf”输出:

“af”

#include<>

#include<>

voidstringFilter(constchar*pInputStr,longlInputLen,char*pOutputStr)

{

inti,j,count;

intk=0;

for(i=0;i

{

count=0;

for(j=0;j

{

if(pInputStr[i]==pOutputStr[j])

{

count++;

}

}

if(count==0)

{

pOutputStr[k++]=pInputStr[i];

}

}

pOutputStr[k]='\0';

}

intmain()

{

charin[20]={"aabbccabacddsads"};

charon[20];

//gets(in);

stringFilter(in,strlen(in),on);

printf("%s",on);

return0;

4、通过键盘输入一串小写字母(a~z)组成的字符串。

请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。

测试:

输入:

“cccddecc”输出:

“3c2de2c”

#include<>

#include<>

voidstringZip(constchar*pInputStr,longlInputLen,char*pOutputStr){

inti,j=0,num=0;

intk=0;

for(i=0;i<=lInputLen;i++)

{

if(i&&pInputStr[i]!

=pInputStr[i-1])

{

if(num>1)

{

pOutputStr[j++]=(char)num+'0';

}

pOutputStr[j++]=pInputStr[i-1];

num=1;

}

else

{

num++;

}

}

pOutputStr[j]='\0';

}

intmain()

{

charin[20]={"ccddecc"};

charon[20];

//gets(in);

stringZip(in,strlen(in),on);

printf("%s",on);

return0;

}

5、通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。

输入字符串的格式为:

“操作数1运算符操作数2”,“操作数”与“运算符”之间以一个空格隔开。

测试:

输入:

4-7”输出:

“-3”

#include<>

#include<>

#include<>

voidarithmetic(constchar*pInputStr,longlInputLen,char*pOutputStr){

inti,count=0,re=0;

intx,y,z;

intnum[2]={0};

charop;

for(i=0;i

{

if(pInputStr[i]==''){

count++;

}

if(count!

=2)

{

pOutputStr[0]='0';

pOutputStr[1]='\0';

return;

}

for(x=0;pInputStr[x]!

='';x++)

{

if(pInputStr[x]>='0'&&pInputStr[x]<='9')

{num[0]=num[0]*10+pInputStr[x]-'0';

}

else

{

pOutputStr[0]='0';

pOutputStr[1]='\0';

return;

}

}

for(y=x+1;pInputStr[y]!

='';y++)

{

}

if(y-x-1!

=1)

{

pOutputStr[0]='0';

pOutputStr[1]='\0';return;

}

else

{if(pInputStr[y-1]!

='+'&&pInputStr[y-1]!

='-'){

pOutputStr[0]='0';

pOutputStr[1]='\0';return;

}

else

{

op=pInputStr[y-1];

}

}for(z=y+1;z

{

if(pInputStr[z]>='0'&&pInputStr[z]<='9'){

num[1]=num[1]*10+pInputStr[z]-'0';

}

else

pOutputStr[0]='0';

pOutputStr[1]='\0';

return;

}

}

if(op=='+')

{

re=num[0]+num[1];

}

else

{

re=num[0]-num[1];

}

itoa(re,pOutputStr,10);

}

intmain()

{

charin[20];

charon[20];

gets(in);

arithmetic(in,strlen(in),on);

printf("%s",on);

return0;

6、选秀节目打分,分为专家评委和大众评委,score[]数组里面存储每个评委打的分数,judge_type[]里存储与score[]数组对应的评委类别,judge_type[i]==1,表示专家评委,judge_type[i]==2,表示大众评委,n

表示评委总数。

打分规则如下:

专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分=专家评委平均分*+大众评委*,总分取整。

如果没有大众评委,则总分=专家评委平均分,总分取整。

函数最终返回选手得分。

#include<>

#include<>

#include<>intcal_score(intscore[],intjudge_type[],intn){

inti=0,gscore;

intpro=0,pub=0;

intpro_count=0,pub_count=0;for(i=0;i

{

if(judge_type[i]==1)

{

pro_count++;

pro=pro+score[i];

}

if(judge_type[i]==2)

{

pub_count++;pub=pub+score[i];

}

}if(pub_count!

=0)

{

gscore=pro/pro_count*+pub/pub_count*;

}else

{gscore=pro/pro_count;

}

returngscore;

}

intmain()

{

intscore[5]={90,80,95,86,87};

intjudge_type[5]={1,2,2,1,1};

intn=5;

printf("%d",cal_score(score,judge_type,n));return0;

}

7、给定一个数组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<>

#include<>voidsort(intinput[],intn,intoutput[]){

inti,j,k,a;

inttemp;

for(i=0;i

{

for(j=0;j

{

if(input[j]

{

temp=input[j+1];

input[j+1]=input[j];input[j]=temp;

}

}

}

k=1;

a=1;

output[n/2]=input[0];

while(k

{

output[n/2-a]=input[k++];

a++;

output[n/2+a-1]=input[k++];

}

}

intmain()

{

intinput[5]={99,80,95,86,87};

intoutput[5];

intn=5,i;

sort(input,n,output);

for(i=0;i

{

printf("%d",output[i]);

}

return0;

}

8、操作系统任务调度问题。

操作系统任务分为系统任务和用户任务两种。

其中,系统任务的优先级<50,用户任务的优先级>=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}

#include<>

#include<>

#include<>

voidscheduler(inttask[],intn,intsystem_task[],intuser_task[])

{

inti,j,temp;

inta=0,b=0;

for(i=0;i

{

if(task[i]<50)

{

system_task[a++]=i;

}

else

{

if(task[i]>=50&&task[i]<=250)

{

user_task[b++]=i;

}

}

}

for(i=0;i

{

for(j=0;j

{

if(task[system_task[j]]>task[system_task[j+1]]){

temp=system_task[j+1];system_task[j+1]=system_task[j];system_task[j]=temp;

}

}

}

for(i=0;i

{

for(j=0;j

{if(task[user_task[j]]>task[user_task[j+1]]){

temp=user_task[j+1];user_task[j+1]=user_task[j];user_task[j]=temp;

}

}

}

system_task[a]=-1;user_task[b]=-1;

}

intmain()

{

inttask[9]={0,30,155,1,80,300,170,40,99};intsystem_task[9];

intuser_task[9];

intn=9,i;

scheduler(task,n,system_task,user_task);for(i=0;system_task[i]!

=-1;i++)

{

printf("%d",system_task[i]);

}

for(i=0;user_task[i]!

=-1;i++)

{

printf("%d",user_task[i]);

}return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2