1. 程式人生 > >實現一個函式,可以左旋字串中的k個字元。 ABCD左旋一個字元得到BCDA ABCD左旋兩個字元得到CDAB

實現一個函式,可以左旋字串中的k個字元。 ABCD左旋一個字元得到BCDA ABCD左旋兩個字元得到CDAB

這個題的思路其實並不是很難理解,左旋字串,可以先將第一個字元和最後一個字元交換,然後進行一個迴圈,就可以解決這個問題了;具體程式碼如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<Assert.h>
void levo(char *pstr, int SZ,int key)
{
	assert(pstr != NULL);
	int i = 0;
	int j = 0;
	for (i = 0; i < key; i++)
	{
		char tmp = pstr[0];
		for (j = 0; j < SZ - 1; j++)
		{
			pstr[j] = pstr[j + 1];
		}
		pstr[SZ - 1] = tmp;
	}
}
int main()
{          
	char str[] = "ABCDEFGH";
	int key = 0;
	int SZ = sizeof(str) / sizeof(str[0])-1;
	printf("請輸入你要旋轉字元的個數");
	scanf("%d", &key);
	levo(str,SZ,key);
	printf("%s", str);
	return 0;
}