華碩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;
}