最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用C語言實現(xiàn)字符串左旋和右旋問題

 更新時間:2018年07月30日 09:58:30   作者:qq_42270373  
這篇文章主要介紹了使用C語言實現(xiàn)字符串左旋和右旋問題,需要的朋友可以參考下

1.實現(xiàn)一個函數(shù),可以左旋字符串中的k個字符。

ABCD左旋一個字符得到BCDA

 ABCD左旋兩個字符得到CDAB

 1.暴力移位法

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void left_move(char*str, int k)
{
  int len = 0;
  int i = 0;
  while (k--)
  {
    //1.把第一個保存起來
    char tmp = *str;
    //2.后面的向后移動
    len = strlen(str);
    for (i = 0; i < len; i++)
    {
      *(str + i) = *(str + 1 + i);
    }
    //3.把保存的數(shù)據(jù)放在最后一位
    *(str + len - 1) = tmp;
  }
}
int main()
{
  char arr[] = "ABCD";
  int n = 0;
  printf("請輸入左旋位數(shù):");
  scanf_s("%d", &n);
  left_move(arr, n);
  printf("%s ", arr);
  system("pause");
  return 0;
}

2.三步翻轉(zhuǎn)法

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
void reverse(char *left, char* right)
{
  assert(left&&right);//斷言
  while (left < right)
  {
    char tmp = *left;
    *left = *right;
    *right = tmp;
    left++;
    right--;
  }
}
void left_move(char*str, int k)
{
  int len = strlen(str);
  reverse(str, str + k - 1);//逆序前半部分
  reverse(str+k, str + len - 1);//逆序后半部分
  reverse(str, str+ len - 1);//逆序整個字符串
}
int main()
{
  char arr[] = "ABCD";
  int n = 0;
  printf("請輸入左旋位數(shù):");
  scanf_s("%d", &n);
  left_move(arr, n);
  printf("%s ", arr);
  system("pause");
  return 0;
}

2.實現(xiàn)一個函數(shù),可以右旋字符串中的k個字符。

ABCD右旋一個字符得到DABC

 ABCD右旋兩個字符得到CDAB

1.暴力移位法

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void right_move(char* p, int k)
{
 int len = strlen(p);
 for (int i = 0; i < k; ++i)//控制旋轉(zhuǎn)次數(shù)
 {
   char tmp = p[len - 1];
   for (int j = len - 1; j > 0; --j)//完成一次旋轉(zhuǎn)
   {
     p[j] = p[j - 1];
   }
   p[0] = tmp;
 }
}
int main()
{
  char arr[] = "ABCD";
  int n = 0;
  printf("請輸入右旋位數(shù):");
  scanf_s("%d", &n);
  right_move(arr, n);
  printf("%s ", arr);
  system("pause");
  return 0;
}

2.三步翻轉(zhuǎn)法:先把字符串整體逆序,然后分別是前半部分逆序和后半部分逆序或者

先是后半部分逆序,接下來是前半部分逆序,最后再整體逆序都可以

具體代碼如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
void reverse(char *left, char* right)
{
  assert(left&&right);//斷言
  while (left < right)
  {
    char tmp = *left;
    *left = *right;
    *right = tmp;
    left++;
    right--;
  }
}
void right_move(char*str, int k)
{
  int len = strlen(str);
  reverse(str, str + len-k -1);//逆序前半部分
  reverse(str+len-k, str + len - 1);//逆序后半部分
  reverse( str ,str + len - 1);//逆序整個字符串
  reverse(str, str + len - 1);//逆序整個字符串
  reverse(str, str + k - 1);//逆序前半部分
  reverse(str+k, str + len - 1);//逆序后半部分
}
int main()
{
  char arr[] = "ABCDEFG";
  int n = 0;
  printf("請輸入右旋位數(shù):");
  scanf_s("%d", &n);
  right_move(arr, n);
  printf("%s ", arr);
  system("pause");
  return 0;
}

總結(jié)

以上所述是小編給大家介紹的使用C語言實現(xiàn)字符串左旋和右旋問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • C++趣味算法之偵探推理

    C++趣味算法之偵探推理

    本文詳細講解了C++趣味算法之偵探推理,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • Visual?Studio?2022?激活碼(親測可用)

    Visual?Studio?2022?激活碼(親測可用)

    在?Visual?Studio?2019?的基礎(chǔ)上,新版集成開發(fā)壞境提供了非常多的改進,包括對?64?位、.NET?6?的支持,為核心調(diào)試器提供更好的性能。本文給大家分享Visual?Studio?2022?激活碼,需要的朋友參考下吧
    2021-12-12
  • C++實現(xiàn)鏈表版本通訊錄

    C++實現(xiàn)鏈表版本通訊錄

    這篇文章主要為大家詳細介紹了C++實現(xiàn)鏈表版本通訊錄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • GetChar緩存機制深入剖析

    GetChar緩存機制深入剖析

    以下是對GetChar緩存機制進行了詳細的介紹,需要的朋友可以過來參考下
    2013-09-09
  • C++超詳細講解強制類型轉(zhuǎn)換的用法

    C++超詳細講解強制類型轉(zhuǎn)換的用法

    在C++語言中新增了四個關(guān)鍵字static_cast、const_cast、reinterpret_cast和dynamic_cast。這四個關(guān)鍵字都是用于類型轉(zhuǎn)換的,類型轉(zhuǎn)換(type?cast),是高級語言的一個基本語法。它被實現(xiàn)為一個特殊的運算符,以小括號內(nèi)加上類型名來表示,接下來讓我們一起來詳細了解
    2022-06-06
  • C++數(shù)據(jù)結(jié)構(gòu)二叉搜索樹的實現(xiàn)應(yīng)用與分析

    C++數(shù)據(jù)結(jié)構(gòu)二叉搜索樹的實現(xiàn)應(yīng)用與分析

    從這篇博客開始,我就要和大家介紹有關(guān)二叉搜索樹的知識,它還衍生出了兩棵樹——AVL樹和紅黑樹,在后面兩篇博客我都會介紹。今天先從二叉搜索樹開始引入
    2022-02-02
  • C++中變量進行初始化的3種方法

    C++中變量進行初始化的3種方法

    本文主要介紹了C++中變量進行初始化的3種方法,包括用"=",構(gòu)造函數(shù)初始化以及統(tǒng)一初始化這三種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • 詳解 linux c++的編譯器g++的基本使用

    詳解 linux c++的編譯器g++的基本使用

    這篇文章主要介紹了詳解 linux c++的編譯器g++的基本使用的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • C++ TinyXML解析案例詳解

    C++ TinyXML解析案例詳解

    這篇文章主要介紹了C++ TinyXML解析案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 詳解C++ const修飾符

    詳解C++ const修飾符

    const 是 constant 的縮寫,const可以幫我們避免無意之中的錯誤操作,本文給大家介紹C++ const修飾符的相關(guān)知識,通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-05-05

最新評論

广丰县| 巨鹿县| 温宿县| 修文县| 东乌珠穆沁旗| 阿拉善盟| 青海省| 天津市| 南京市| 南城县| 南江县| 象州县| 泸州市| 炉霍县| 康定县| 泉州市| 漳州市| 措勤县| 琼结县| 水城县| 新昌县| 象山县| 兴城市| 霍林郭勒市| 龙江县| 禹城市| 德州市| 礼泉县| 小金县| 阿克| 姚安县| 四川省| 祁东县| 昆山市| 区。| 望谟县| 崇义县| 大厂| 林州市| 民丰县| 濮阳市|