c语言代码练习35

问:将字符串的n个字符左旋

例 :asdf左旋一个sdfa

asdf左旋两个dfas

复制代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>

void Ayue(char* ar, int k)
{
    int i = 0;
    int sz = strlen(ar);
    for (i = 0; i < k; i++)
    {
        char tmp = *ar;
        int j = 0;
        for (j = 0; j < sz-1; j++)
        {
            *(ar + j) = *(ar + j + 1);
        }
        *(ar + sz - 1) = tmp;
    }
}
int main()
{
    char ar[] = "abcdef";
    Ayue(ar, 2);
    printf("%s\n",ar);
    return 0;
}
复制代码

 

方法二

三步逆旋法

复制代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
#include<assert.h>

void Mylift(char* left, char* right)
{
    assert(left != NULL);
    assert(right != NULL);
    char rmp = 0;
    while (left<right)
    {
        rmp = *left;
        *left = *right;
        *right = rmp;
        right--;
        left++;
    }
}

void Ayue(char* arr, int k)
{
    assert(arr);
    int sz = strlen(arr);
    assert(k < sz);
    Mylift(arr,arr+k-1);//逆序左边
    Mylift(arr+k,arr+sz-1);//逆序右边
    Mylift(arr,arr+sz-1);//逆序整体
}

int main()
{
    char arr[] = "abcdef";
    Ayue(arr, 2);
    printf("%s\n", arr);
    return 0;
}
复制代码

 

posted @   小菜阿跃  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示