实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB

 每次拿到首元素先保存下来,每一次循环使字符串元素全部向前面搬移,最后将首元素赋值给末尾元素,这样每次都可以完成一个字符的左旋,最后再用一个循环控制进行多少次左旋字符操作。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//需要左旋的字符为前 n - 1 个,每一次内层 j 循环完将所以字符向前搬移一位
//先记录 a[0] 元素值,每次内层 i 循环完后,将首元素放到最后
//外层 i 循环控制需要搬移的元素个数
void Left_handed(char a[], int key, int len)
{
	for (int i=0; i < key; ++i)
	{
		int j = 0;
		char tmp = a[0];
		for (j = 0; j < len; ++j)
		{
			a[j] = a[j + 1];
		}
		a[len - 1] = tmp;
	}
}


int main()
{
	char a[] = "ABCDEF";
	int key;
	scanf("%d", &key);		//输入需要左旋 k 个字符
	int len = strlen(a);		//给出字符串长度
	Left_handed(a, key, len);
	for (int i = 0; i < len; ++i)		//打印左旋后的字符串
	{
		printf("%c ", a[i]);
	}
	printf("\n");
	system("pause");
	return 0;
}

 

上一篇:常见linux命令释义(第八天)—— Bash Shell 的操作环境


下一篇:ABCD组·第五次团队作业项目需求分析改进与系统设计