1 / 15
文档名称:

华为机试题及答案.docx

格式:docx   大小:23KB   页数:15页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

华为机试题及答案.docx

上传人:相惜 2020/11/10 文件大小:23 KB

下载得到文件列表

华为机试题及答案.docx

文档介绍

文档介绍:华为机试题及答案
1、通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。
测试:输入:“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]==' ')
{
}
for(;i<lInputLen;i++)
{
if(pInputStr[i]==' ')
{
flag=1;
continue;
i++; 输出:“abc,def,gh,i,d,”
} } }
if(flag==1)
{
}
pOutputStr[j++]=pInputStr[i]; flag=0;
pOutputStr[j++]=',';
pOutputStr[j++]=',';
pOutputStr[j]='\0';
int main()
{
}
2、将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一char test[40];
char re[40];
gets(test);
DivideString(test, strlen(test), re);
printf("%s",re);
return 0;
个字母需要连续转换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<strlen(input);i++)
{
if(i==0)
{
}
else
{
if(input[i]!=input[i-1])
{
output[i]=input[i]+1;
if(output[i]==123)
{
} output[i]=97;
} } }
else
{
} output[i]=input[i]+1;
if(output[i]==123)
{
} output[i]=97;
output[i]=input[i]+2;
if(output[i]==123)
{
}
if(output[i]==124)
{
} output[i]=98;
output[i]=97;
output[i+1]='\0';
}
int main()
{
}
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<strlen(pInputStr);i++)
{
count=0;
char in[20]={"asdfzzxzxz"};
char on[20];
//gets(in);
convert(in,on);
printf("%s",on);
return 0;
} } for(j=0;j<strlen(pOutputStr);j++)
{
}
if(count==0)
{
} pOutputStr[k++]=pInputStr[i];
if(pInputStr[i]==pOutputStr[j])
{
} count++;
pOutputStr[k]='\0';
int main()
{