目录
解题分析:
题目要求:
- 实现一个函数,可以左旋字符串中的k个字符。
- ABCD左旋一个字符得到BCDA
- ABCD左旋两个字符得到CDAB
代码示例:
-
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<assert.h> void move(char *arr, int count) { int j = 0; char tmp = arr[0];//第一位字符保存 for (j = 0; j < count - 1; j++) { arr[j] = arr[j + 1];//把后一位赋值给前一位 } arr[j] = tmp;//把保存起来的第一位赋值给最后一位 count--; } void leftMove(char *arr, int sz, int count) { assert(arr); count %= sz; while (count--) { move(arr, sz); } } int main() { char arr[] = "ABCDEFG"; printf("%s\n", arr); int count = 0; printf("请输入你要左旋的位数:"); scanf("%d", &count); int sz = sizeof(arr) / sizeof(arr[0]) - 1; leftMove(arr, sz, count); printf("左旋之后:\n%s\n", arr); system("pause"); return 0; }
运行结果:
-