文档介绍:- -
- 考试资料
华为机试题及答案
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<lInputLen;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<strlen(input);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(outpu