重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

三种方法实现一个函数,可以左旋字符串中的k个字符-创新互联

例如:abcd左旋一个字符得到bcda,abcd左旋两个字符得到cdab
1.数组下标法

创新互联从2013年创立,先为抚松等服务建站,抚松等地企业,进行企业商务咨询服务。为抚松企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
#include
#include

void left_handed(char *str, int k)
{
    int i;
    int count = 0;
    char temp;
   while (count < k)
    {
        temp = str[0];
        for (i = 0; i < strlen(str)-1; i++)
        {
            str[i] = str[i + 1];//所有字符左移一位
        }
        count++;
        str[strlen(str) - 1] = temp;
    }
}
int main()
{
    int k=0;
    char str[] = "abcdef";
    printf("输入需要左旋多少个字符:\n");
    scanf("%d",&k);
    left_handed(str,k);
    printf("%s",&str);
    return 0;
}

2.指针法

#include

void left_move(char *str, int k)
{
   while (k--)//相当于k!=0
    {
        char *cur = str;//定义一个指针,存储字符串首地址
        char tmp=*cur;
       while ((*(cur+1)) != '\0')
        {
            *cur = *(cur + 1);//字符串左移一位
            cur++;
        }
        *(cur) = tmp;
    }
}
int main()
{
    char str[] = "abcd";
    int k = 0;
    printf("请输入左移位数:\n");
    scanf("%d",&k);
    left_move(str, k);
    printf("%s",str);
    return 0;
}

3.指针==》逆序法

#include
#include

void Reverse(char *left, char *right)//逆序函数
{
   while (left < right)
    {
        char tmp = *left;
        *left = *right;
        *right = tmp;
        left++;
        right--;
    }
}
void left_move(char *str, int k, int len)//左旋函数
{
    char *left = str;
    char *right = str+len - 1;
    if (k<0 || k>len)
    {
        printf("不合法!\n");
    }
    else
    {
        Reverse(left, str+k-1);//地址,需要逆序的左右位置
        Reverse(str+k , right);
        Reverse(left, right);
    }
}
int main()
{
    int k;
    printf("请输入左移位数:\n");
    scanf("%d",&k);
    char str[] = "abcd";
    int len = strlen(str);
    left_move(str,k,len);
    printf("%s",str);
    return 0;
}

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:三种方法实现一个函数,可以左旋字符串中的k个字符-创新互联
本文网址:http://cqcxhl.com/article/cdghss.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP