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

华硕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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值