1.字符串左旋
//实现一个函数,可以左旋字符串的k个字符
例如:ABCD左旋字符串的1个字符BCDA
ABCD左旋字符串的2个字符CDAB
2.第一步我们先输入k(scanf),将第一位进行储存,然后其他位先前走一位,然后将第一位放在最后,然后进行打印。
方法一
#include<stdio.h>
void test(char arr[],int k)
{
int str = strlen(arr);
for (int i = 0; i < k; i++)
{
//1.
char tmp = arr[0];
//2
for (int j = 0; j < str - 1; j++)
{
arr[j] = arr[j + 1];
}
//3
arr[str - 1] = tmp;
}
}
int main()
{
int k = 0;
scanf_s("%d", &k);
char arr[] = { "ABCD" };
test(arr, k);
printf("%s\n", arr);
return 0;
}
方法二
左边逆序,右边逆序,然后整体逆序,可以进行函数调用
例如·:(a b)(c d e f)
逆序: (b a)(f e d c)
整型逆序:(c d e f a b)
//方法二
void lixu(char*left, char*right)
{
while (left < right)
{
int tmp = *right;
*right = *left;
*left = tmp;
left++;
right--;
}
}
void test(char arr[], int k)
{
int len = strlen(arr);
k%=len;
lixu(arr, arr + k - 1);//左边
lixu(arr+k, arr + len-1);//右边
lixu(arr, arr + len-1);//整体
}
int main()
{
int k = 0;
scanf_s("%d", &k);
char arr[] = { "abcdef" };
test(arr, k);
printf("%s\n", arr);
return 0;
}