文章目录
-
- 问题
- 思路
- 关键代码
- 运行代码
问题
实现一个函数,可以左旋字符串中的k个字符。
例如:
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
思路
由例题可知,左旋的字符放进空字符串(char arr2[]="")里,然后再打印剩余字符,随后打印arr2。
关键思路
1、初始化char arr2[]="",然后将左旋的字符一一放进arr2中(for循环放入)。
char arr2[5] = "";
char* p = arr1;
int i = 0;
printf("字符串左旋之后:");
for (i = 0; i < k; i++)
{
arr2[i] = *p;
p++;
}
2、然后通过for循环打印剩余的字符。
int j = 0;
char* b = p;
for (j = k; j < str; j++)
{
printf("%c", *b);
b++;
}
3、最后打印arr2。
printf("%s", arr2);
运行代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
void Left_rotation_of_string(char*arr1,int str,int k)
{
char arr2[5] = "";
char* p = arr1;
int i = 0;
printf("字符串左旋之后:");
for (i = 0; i < k; i++)
{
arr2[i] = *p;
p++;
}
int j = 0;
char* b = p;
for (j = k; j < str; j++)
{
printf("%c", *b);
b++;
}
printf("%s", arr2);
printf("\n");
}
int main()
{
int k;
printf("请输入想左旋字符串中的字符:");
scanf("%d", &k);
char arr1[] = "ABCDE";
printf("字符串左旋之前:");
printf("%s\n", arr1);
int str = strlen(arr1);
Left_rotation_of_string(arr1,str,k);
return 0;
}