目录
题目:
解题思路:
第一步:
第二步:
第三步:
总代码:
题目:
实现一个函数,可以左旋字符串中的k个字符。
例如:
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
解题思路:
由题目可以看出每次旋转就是把字符串的第一个字符弄到字符串末尾,然后剩下的字符一次向前进一位,,所以我们这里采用数组的方式进行。
第一步:
定义字符串数组,需要交换的次数K,和算出字符串的大小;
char arr[1000] = { 0 };
scanf("%s", &arr);
int k = 0;
scanf("%d", &k);
int ch = strlen(arr);
第二步:
for循环,我们可以使用两个for循环,第一个for循环,循环K次,第二个for循环循环字符的交换。
for (int i = 0; i < k; i++)
{
int b = arr[0];//将数组交换前的第一个数存储
for (int j = 0; j < ch; j++)//数组每一位向前进一位
{
arr[j] = arr[j + 1];
}
arr[ch - 1] = b;//最后一位,补上最先存储的数
}
第三步:
输出
printf("%s", arr);
总代码:
#include<stdio.h>
#include<string.h>
int main()
{
char arr[1000] = { 0 };
scanf("%s", &arr);
int k = 0;
scanf("%d", &k);
int ch = strlen(arr);
for (int i = 0; i < k; i++)
{
int b = arr[0];
for (int j = 0; j < ch; j++)
{
arr[j] = arr[j + 1];
}
arr[ch - 1] = b;
}
printf("%s", arr);
return 0;
}