华为机试题及答案

华为机试题及答案


2024年5月13日发(作者:oppor11st手机价格)

华为机试题及答案

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

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

并将子串存储。

测试:输入:“abc def gh i d” 输出:“abc,def,gh,i,d,”

#include<>

#include<>

void DivideString(const char *pInputStr, long lInputLen, char *pOutputStr)

{

int i=0,j=0;

int flag=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';

}

int main()

{

char test[40];

char re[40];

gets(test);

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

printf("%s",re);

return 0;

}

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

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

字母需要连续转换2次。例如:aa 转换为 bc,zz 转换为 ab;当连续相同字母超过两

个时,第三个出现的字母按第一次出现算。

测试:输入:char*input="abbbcd" 输出:char*output="bcdcde"

#include<>

#include<>

void convert(char *input,char* output)

{

int i;

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

}

int main()

{

char in[20]={"asdfzzxzxz"};

char on[20];

//gets(in);

convert(in,on);

printf("%s",on);

return 0;

}

3、通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若

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

测试:输入:“afafafaf” 输出:“af”

#include<>

#include<>

void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr)

{

int i,j,count;

int k=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';

}

int main()

{

char in[20]={"aabbccabacddsads"};

char on[20];

//gets(in);

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

printf("%s",on);

return 0;

}

4、通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将

字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。

测试:输入:“cccddecc” 输出:“3c2de2c”

#include<>

#include<>

void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr)

{

int i,j=0,num=0;

int k=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';

}

int main()

{

char in[20]={"ccddecc"};

char on[20];

//gets(in);

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

printf("%s",on);

return 0;

}

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

符串。

输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之

间以一个空格隔开。

测试:输入:“4 - 7” 输出:“-3”

#include<>

#include<>

#include<>

void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr)

{

int i,count=0,re=0;

int x,y,z;

int num[2]={0};

char op;

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


发布者:admin,转转请注明出处:http://www.yc00.com/num/1715579537a2639760.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信