华为机试题及答案Word格式.docx

上传人:b****5 文档编号:19820206 上传时间:2023-01-10 格式:DOCX 页数:16 大小:17.67KB
下载 相关 举报
华为机试题及答案Word格式.docx_第1页
第1页 / 共16页
华为机试题及答案Word格式.docx_第2页
第2页 / 共16页
华为机试题及答案Word格式.docx_第3页
第3页 / 共16页
华为机试题及答案Word格式.docx_第4页
第4页 / 共16页
华为机试题及答案Word格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

华为机试题及答案Word格式.docx

《华为机试题及答案Word格式.docx》由会员分享,可在线阅读,更多相关《华为机试题及答案Word格式.docx(16页珍藏版)》请在冰豆网上搜索。

华为机试题及答案Word格式.docx

continue;

if(flag==1)

flag=0;

pOutputStr[j++]='

'

;

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

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"

voidconvert(char*input,char*output)

inti;

for(i=0;

strlen(input);

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]+2;

if(output[i]==124)

output[i]=98;

output[i+1]='

charin[20]={"

asdfzzxzxz"

};

charon[20];

//gets(in);

convert(in,on);

on);

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

请编写一个字符串过滤程

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

“afafafaf”输出:

“af”

voidstringFilter(constchar*pInputStr,longlInputLen,char

inti,j,count;

intk=0;

strlen(pInputStr);

count=0;

for(j=0;

j<

strlen(pOutputStr);

j++)

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

count++;

if(count==0)

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

pOutputStr[k]='

aabbccabacddsads"

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

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

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

“cccddecc”输出:

“3c2de2c”

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

inti,j=0,num=0;

=lInputLen;

if(i&

&

pInputStr[i]!

=pInputStr[i-1])

if(num>

1)

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

0'

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

num=1;

num++;

ccddecc"

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

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

输入字符串的格式为:

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

“4-7”输出:

“-3”

math.h>

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

inti,count=0,re=0;

intx,y,z;

intnum[2]={0};

charop;

if(count!

=2)

pOutputStr[0]='

pOutputStr[1]='

return;

for(x=0;

pInputStr[x]!

='

x++)

if(pInputStr[x]>

pInputStr[x]<

9'

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

for(y=x+1;

pInputStr[y]!

y++)

if(y-x-1!

=1)

return;

if(pInputStr[y-1]!

+'

pInputStr[y-1]!

-'

op=pInputStr[y-1];

for(z=y+1;

z<

z++)

if(pInputStr[z]>

pInputStr[z]<

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

if(op=='

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

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

itoa(re,pOutputStr,10);

charin[20];

gets(in);

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

6、选秀节目打分,分为专家评委和大众评委,score[]数组里面存储每个评委

打的分数,judge_type[]里存储与score[]数组对应的评委类别,

judge_type[i]==1,表示专家评委,judge_type[i]==2,表示大众评委,n

表示评委总数。

打分规则如下:

专家评委和大众评委的分数先分别取一个平均

分(平均分取整),然后,总分=专家评委平均分*0.6+大众评委*0.4,

总分取整。

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

函数

最终返回选手得分。

intcal_score(intscore[],intjudge_type[],intn)

inti=0,gscore;

intpro=0,pub=0;

intpro_count=0,pub_count=0;

n;

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*0.6+pub/pub_count*0.4;

gscore=pro/pro_count;

returngscore;

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

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

intn=5;

%d"

cal_score(score,judge_type,n));

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}

voidsort(intinput[],intn,intoutput[])

inti,j,k,a;

inttemp;

n-i-1;

if(input[j]<

input[j+1])

temp=input[j+1];

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

input[j]=temp;

k=1;

a=1;

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

while(k<

n)

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

a++;

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

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

intoutput[5];

intn=5,i;

sort(input,n,output);

%d"

output[i]);

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<

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

inti,j,temp;

inta=0,b=0;

if(task[i]<

50)

system_task[a++]=i;

if(task[i]>

=50&

task[i]<

=250)

user_task[b++]=i;

a;

a-i-1;

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;

b;

b-i-1;

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;

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);

system_task[i]!

=-1;

system_task[i]);

user_task[i]!

user_task[i]);

如有侵权请联系告知删除,感谢你们的配合!

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

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1