华硕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或者更多位的字符串全排列,
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;
}