实现一个函数,可以左旋字符串中的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 }