华为机试题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
{华为机试题及答案
1、通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格
分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。
测试:输入:“ abc def gh i d ” 输出:“ abc,def,gh,i,d, ”
#i nclude
#i nclude
void DivideStri ng(c onst char *pln putStr, long lln putLe n, char
*pOutputStr)
{
int i=0,j=0;
int flag=0;
while(pI nputStr[i]=='')
{
i++;
}
for(;i
if(pInputStr[i]=='')
flag=1;
con ti nue;
}
if(flag==1)
{
flag=0;
pOutputStr[j++]=',';
}
pOutputStr[j++]=p In putStr[i];
}
pOutputStr[j++]=',';
pOutputStr[j]='\O';
}
int main()
{
char test[40];
char re[40];
gets(test);
DivideStri ng(test, strle n(test), re);
prin tf("%s",re);
return 0;
2、将输入的字符串(字符串仅包含小写字母‘ a'到‘ z'),按照如下规则,循
环转换后输出:a->b,b- >c,…,y->z,z->a ;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:aa转换为be, zz转换为ab ;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。
测试:输入:ehar*input="abbbcd" 输出:char*output="bcdcde"
#i nclude
#i nclude
void con vert(char *in put,char* output)
{
int i;
for(i=0;i { if(i==0) { output[i]=i nput[i]+1; if(output[i]==123) { output[i]=97; } } else if(i nput[i]!=i nput[i-1]) { output[i]=i nput[i]+1; if(output[i]==123) { output[i]=97; } } else { output[i]=i nput[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 o n[20]; 〃gets(i n); conv ert(i n,on); prin tf("%s",o n); return 0; } 3、通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 测试:输入:“ afafafaf ”输出:“ af ” #i nclude #i nclude void stri ngFilter(c onst char *pln putStr, long lln putLe n, char *pOutputStr) { int i,j,co unt; int k=0; for(i=0;i { coun t=0; for(j=0;j { if(pI nputStr[i]==pOutputStr[j]) { coun t++; } } if(co un t==0) { pOutputStr[k++]=pl nputStr[i]; } } pOutputStr[k]='\0'; } int main() { char in[ 20]={"aabbccabacddsads"}; char o n[20];