39.实现一个函数,可以左旋字符串中的k个字符。
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
代码如下:
#include <stdio.h>
#include <stdlib.h>
void Left_rot(char* arr,int len, int k){//定义一个左旋函数
char ch;//定义一个字符型变量
while (k>0){//当左旋次数大于0,执行循环体
ch = arr[0];//将第一个字符赋值给ch
for (int i = 0; i < len; ++i){//对字符串数组进行遍历
arr[i] = arr[i+1];//每个字符依次左移一位
}
--k;//一个字符左旋一次,k减一
arr[len - 1] = ch;//将移位前的第一个元素赋给最后一个元素
}
printf("%s\n", arr);//输出左旋后的字符串
}
int main(){
int k,len;//定义2个整形变量
char arr[] = "ABCDEF";//定义一个字符串数组,并进行初始化
len = strlen(arr);//取字符元素的个数
printf("请输入需要左旋字符的个数:\n");//提示输入
scanf("%d", &k);//输入需要左旋字母的个数
Left_rot(arr,len,k);//调用Left_rot函数
system("pause");
return 0;
}
运行结果: