华为机试题及答案.docx

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

华为机试题及答案.docx

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

华为机试题及答案.docx

华为机试题及答案

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

请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。

测试:

输入:

“abcdefghid” 输出:

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

#include

#include

voidDivideString(constchar*pInputStr,longlInputLen,char*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表示评委总数。

打分规则如下:

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

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

函数最终返回选手得分。

#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*0.6+pub/pub_co

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

当前位置:首页 > 考试认证 > IT认证

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

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