幾道有關字符串處理的編程題(華碩,盛大招聘筆試題)

華碩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
發佈了65 篇原創文章 · 獲贊 3 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章