您的位置:首页 > 编程语言

几道有关字符串处理的编程题(华硕,盛大招聘笔试题)

2011-11-07 21:23 232 查看
华硕2011校园招聘:

将一字符串中的字符变为其前一个字符:如:zx11r@->aw11q@



#include<iostream>

#include<assert.h>

using namespace std;

void conventstr(char* src,char* dest)

{

assert(src!=NULL);

int length=strlen(src)+1;/*注意,取值先在开头进行处理,并且做好原数据的备份,以防以后用到但原值已经改变*/

char* temp=src;

while(*src!='\0')

{

if(*src>'a' && *src<='z'|| *src>'A' && *src<='Z')

{

*src=*src-1;

}

if(*src=='a')

{

*src='z';

}

if(*src=='A')

{

*src='Z';

}

*dest++=*src++;/*方法1:类似mystrcpy函数的实现,但注意最后添0操作*/

}
}
盛大游戏2011校园招聘:

简答题:快速排序的思想是递归的,但是它的平均效率却是众多排序算法中最快的,为什么?请结合本例说明你对递归程序的理解。

算法题:用你熟悉的编程语言,设计如下功能的函数:输入一个字符串,输出该字符串中所有字母的全排列。程序请适当添加注释。

C++函数原型: void Print(const char *str)

输入样例: abc


输出结果: abc、acb、bca、bac、cab、cba

局限:::程序无法实现4或者更多位的字符串全排列,

#include <iostream>

using namespace std;

void Print(char* str)

{

static char a=1;//保留原str首字符,作为递归结束判断标准;

static int flag=1;

if(flag==1)

{

a=*str;

flag++;

}

cout<<str<<endl;

char* temp=str;

char p;

int length=strlen(str);

int begin=1;

while(begin<length)//start swap

{

p=temp[begin];

temp[begin]=temp[length-1];

temp[length-1]=p;

begin++;

length--;

}

cout<<temp<<endl;

p=temp[0];//调整字符串首位字符;

temp[0]=temp[1];

temp[1]=p;

if(temp[0]==a)//判断是否要继续递归;

{

return ;

}

else

{

Print(temp);

}

}

int main()

{

char a[]="zxt";

Print(a);

return 1;

}

另龙旗,C经典笔试题中各有关字符串处理将逐一整理 fmoonstar更新至11.7
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐