一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - C/C++ - 使用C語(yǔ)言實(shí)現(xiàn)字符串左旋和右旋問(wèn)題

使用C語(yǔ)言實(shí)現(xiàn)字符串左旋和右旋問(wèn)題

2021-06-30 15:1342270373 C/C++

這篇文章主要介紹了使用C語(yǔ)言實(shí)現(xiàn)字符串左旋和右旋問(wèn)題,需要的朋友可以參考下

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

ABCD左旋一個(gè)字符得到BCDA

 ABCD左旋兩個(gè)字符得到CDAB

 1.暴力移位法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#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.把第一個(gè)保存起來(lái)
    char tmp = *str;
    //2.后面的向后移動(dòng)
    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("請(qǐng)輸入左旋位數(shù):");
  scanf_s("%d", &n);
  left_move(arr, n);
  printf("%s ", arr);
  system("pause");
  return 0;
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#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);//逆序整個(gè)字符串
}
int main()
{
  char arr[] = "ABCD";
  int n = 0;
  printf("請(qǐng)輸入左旋位數(shù):");
  scanf_s("%d", &n);
  left_move(arr, n);
  printf("%s ", arr);
  system("pause");
  return 0;
}

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

ABCD右旋一個(gè)字符得到DABC

 ABCD右旋兩個(gè)字符得到CDAB

1.暴力移位法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#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("請(qǐng)輸入右旋位數(shù):");
  scanf_s("%d", &n);
  right_move(arr, n);
  printf("%s ", arr);
  system("pause");
  return 0;
}

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

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

具體代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#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);//逆序整個(gè)字符串
  reverse(str, str + len - 1);//逆序整個(gè)字符串
  reverse(str, str + k - 1);//逆序前半部分
  reverse(str+k, str + len - 1);//逆序后半部分
}
int main()
{
  char arr[] = "ABCDEFG";
  int n = 0;
  printf("請(qǐng)輸入右旋位數(shù):");
  scanf_s("%d", &n);
  right_move(arr, n);
  printf("%s ", arr);
  system("pause");
  return 0;
}

總結(jié)

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

原文鏈接:https://blog.csdn.net/qq_42270373/article/details/81279681

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91频视| 小小水蜜桃视频高清在线观看免费 | 日韩欧美成末人一区二区三区 | 龟甲情感超市全文阅读 小说 | 动漫xnxx| 亚洲国产网址 | 久久精品99国产精品日本 | 麻豆网页 | 国产午夜精品福利久久 | 久久青青草视频在线观 | 嗯啊视频在线观看 | 91.prom在线观看国产 | 精品视频在线观看 | 色先锋av资源中文字幕 | 精品一区在线 | 女仆色网址 | 视频亚洲一区 | 欧美视频在线播放观看免费福利资源 | 四虎精品永久在线网址 | 黑白配高清hd在线视频 | 青草久久精品亚洲综合专区 | 吻戏辣妞范1000免费体验 | 99精品国产自产在线观看 | 成人免费观看在线视频 | 精品久久久久久影院免费 | 四虎影院在线免费观看 | 亚洲视频一 | 国产免费一区二区三区免费视频 | 日本一区二区三区久久精品 | 亚洲美女aⅴ久久久91 | 小小水蜜桃视频高清在线播放 | 国产精品亚洲va在线观看 | 日本无遮挡亲吻膜下面免费 | 亚洲一区二区三区福利在线 | 乖女的嫩奶水h文孕妇 | 3d蒂法精品啪啪一区二区免费 | 精品在线播放 | 成人欧美一区二区三区 | 女教师雪白老汉 | 国产老太婆hd老头 | 麻豆网站视频国产在线观看 |