要想实现这个函数功能,可以先把字符串传进数组中去,构建左移函数:
思路
可以把数组元素逐个向左赋值,把第一个元素的值先存进临时变量之后赋给最后一个元素的值,至此可以实现一次左移,如果要求左移多个单位需要进入循环控制,值得注意的是,举例子:假设是一个长度为四的字符串的话,左移5 9 13...就相当于左移了一次,所以次数time可以写成time %=len(长度)
#include<stdio.h>
#include<string.h>
char* leftRound(char* src, int time)
{
int i, j, tmp;
int len = strlen(src);
time %= len; //长度为4的情况下,旋转5、9、13...次相当于1次,6、10、14...次相当于2次,以此类推。
for (i = 0; i < time; i++) //执行k次的单次平移
{
tmp = src[0];
for (j = 0; j < len - 1; j++) //单次平移
{
src[j] = src[j + 1];
}
src[j] = tmp;
}
return src;
}
int main()
{
char src[50] = { 0 };
int time = 0;
scanf("%s", src);
scanf("%d", &time);
printf("%s", leftRound(src, time));
return 0;
}
函数参数一个是数组地址,一个是移动次数,所以可以用char*指针传参,以下就是事例运行结果了供大家参考哦: