实现一个函数,可以左旋字符串中的k个字符

ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB

 ABCD
 BACD
 BCAD
 BCDA
 CBDA
 CDBA
 CDAB
 发现规律: 如果左旋一个字符则可以将第一个字符依次与后面的字符交换位置
         如果左旋k个字符则可以将上面的操作进行k次

 1 #include<stdio.h>
 2 #include<string.h>
 3 #define _CRT_SECURE_NO_WARNINGS
 4 
 5 void Change_str(char* start,char* end,int num)
 6 {
 7     //ABCD
 8     //BACD
 9     while (*end!='\0')
10     {
11         *start = *start^*end;
12         *end = *start^*end;
13         *start = *start^*end;
14         ++start;
15         ++end;
16     }
17 }
18 
19 int main()
20 {
21     char str[100];
22     printf("请输入一段字符串:\n");
23     scanf("%s",&str);
24     printf("请输入左旋的字符数k:\n");
25     int k = 0;
26     scanf("%d",&k);
27     int num = (int)strlen(str);
28     for (int i = 0;i < k;++i)
29     {
30         Change_str(str, str + 1, num);
31     }
32     printf("%s\n", str);
33 
34     return 0;
35 }

 

posted on 2019-02-15 11:06  The_Ocean  阅读(276)  评论(0编辑  收藏  举报

导航