华为历年机试题型总结系列(二)

时间:2020-11-25 18:49:00

3. 字符串压缩——连续出现次数大于等于2的字符,压缩后出现数字信息

    输入: aabbbcc  输出:2a3b2c          输入:abcdef        输出:abcdef

    PS:数字2转换成对应的字符2为: (char)(2 + 48); 

<pre name="code" class="cpp">#include<stdio.h>
#include<string.h>

void StrZip(char *pInputStr, int StrLength, char *pOutputStr)
{
int i,j=0,words_count=1;
for(i=0;i<StrLength;)
{
if(pInputStr!='\0' && pInputStr[i]==pInputStr[i+1]) //如果连续出现字符
{
++words_count;
++i;
}

if(words_count==1) //如果只出现一次
{
pOutputStr[j++]=pInputStr[i++];
}else //如果连续出现
{
pOutputStr[j++]=(char)(words_count+48); //将数字转化成对应的字符
pOutputStr[j++]=pInputStr[i++];
words_count=1; //计数归1,便于后继判断
}
}

pOutputStr[j]='\0';
}

int main(void)
{
char pInputStr[20],pOutputStr[20];
int StrLength;

while(scanf("%s",pInputStr) != EOF)
{
StrLength=strlen(pInputStr);
StrZip(pInputStr,StrLength,pOutputStr);
puts(pOutputStr);
}

return 0;
}


 

4. 字串分离

    输入:a b c d   输出:a,b,c,d, 将空格用‘,’代替,并且最后一个字符后要有‘,’

#include<stdio.h>
#include<string.h>

void StrDivide(char *pInputStr, int StrLength, char *pOutputStr)
{
int i,j=0;
for(i=0;i<StrLength;)
{
if(pInputStr[i]==' ') //如果遇到空格
{
pOutputStr[j++]=',';
++i;
}else //非空格字符直接赋值输出
{
pOutputStr[j++]=pInputStr[i++];
}
}

pOutputStr[j]=','; //最后一个字符后面是,
pOutputStr[j+1]='\0';
}

int main(void)
{
char pInputStr[20],pOutputStr[20];
int StrLength;

printf("Input the string:\n");
gets(pInputStr);
StrLength=strlen(pInputStr);

StrDivide(pInputStr,StrLength,pOutputStr);
puts(pOutputStr);

return 0;
}

5. 字符串首字母转换成大写

    输入:this is a book 输出:This Is A Book

    PS:小写转换成大写 CH=ch-'a'+'A';

#include<stdio.h>
#include<string.h>

void FirstLetter(char *pInputStr, int StrLength, char *pOutputStr)
{
int i,j=1;
pOutputStr[0]=pInputStr[0]-'a'+'A'; //首字母大写
for(i=1;i<StrLength;)
{
if(pInputStr[i]==' ') //如果遇到空格
{
pOutputStr[j++]=pInputStr[i]; //输出空格
pOutputStr[j++]=pInputStr[i+1]-'a'+'A'; //空格后的字母大写
i+=2; //原字符串指针跳过空格和大写字母
}else
{
pOutputStr[j++]=pInputStr[i++]; //其余字符直接输出
}
}
pOutputStr[j]='\0';
}

int main(void)
{
char pInputStr[20],pOutputStr[20];
int StrLength;

printf("Input the string:\n");
gets(pInputStr);

FirstLetter(pInputStr,StrLength,pOutputStr);
puts(pOutputStr);

return 0;
}

       下面接 华为历年机试题型总结系列(三)