1.暴力求解法

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
void left_move(char* arr, int k)
{
	int i = 0;
	for (i = 0; i < k; i++)
	{
		int len = strlen(arr);
		int tmp = *arr;//1.先把arr第一个元素拿出来
		int j = 0;
		for (j = 0; j < len - 1; j++)//2.把后面的字符往前挪一个字符
		{
			*(arr + j) = *(arr + j + 1);
		}
		*(arr + len - 1) = tmp;//3.最后把第一个字符放到最后面
	}
}
int main()
{
	char arr[] = "abcdef";
	left_move(arr, 2);
	printf("%s\n", arr);
	return 0;
}

2.解法优化

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <assert.h>
void revese(char* left, char* right)
{
	while (right>left)
	{
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}
void left_move(char* arr, int k)
{
	assert(arr != NULL);
	int len = strlen(arr);
	assert(k < len);
	revese(arr, arr + k - 1);//
	revese(arr + k, arr + len - 1);//ұ
    revese(arr, arr + len - 1);//ַ
}
int main()
{
	char arr[] = "abcdef";
	left_move(arr, 2);
	printf("%s\n", arr);
	return 0;
}