程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言--左旋字符串中的K個字符

C語言--左旋字符串中的K個字符

編輯:關於C語言

C語言--左旋字符串中的K個字符


問題:      3.實現一個函數,可以左旋字符串中的k個字符。         AABCD左旋一個字符得到ABCDA         AABCD左旋兩個字符得到BCDAA  
#include<stdio.h>
#include<assert.h>
#include<string.h>
void reserve(char* str, int len)
{
    assert(str);
    char* start = str;
    char* end = str + len - 1;
    while (start < end)
    {
        char tmp = *start;
        *start = *end;
        *end = tmp;
        start++;
        end--;
    }
}
void reserve1(char* str, int len, int k)
{
    reserve(str, len);//dcbaa
    assert(str);
    char* start = str ;
     
    if (k < len)
    {
        char* end = str + len - 1 - k;
        while (start < end)
        {
            char tmp = *start;
            *start = *end;
            *end = tmp;
            start++;
            end--;
        }
    }
    else
    {
        printf("輸入的字符串個數太大\n");
    }
}
void reserve2(char* str, int len,int s)
{
    assert(str);
    reserve1(str, len, s);//cdbaa
    char* start = str+len-s;
    char* end = str + len - 1;
    while (start < end)
    {
        char tmp = *start;
        *start = *end;
        *end = tmp;
        start++;
        end--;
    }
}
int main(void)
{
    char str[] = "aabcd";
    int len = strlen(str);
    int s;
    printf("請輸入要旋轉的字符串個數\n");
    scanf_s("%d", &s);
    reserve2(str, len, s);
    printf("%s", str);
}

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved