1. 程式人生 > >C語言實現一個函式,可以左旋字串中的k個字元

C語言實現一個函式,可以左旋字串中的k個字元

// 實現一個函式,可以左旋字串中的k個字元

  例如:

                //ABCD左旋一個字元得到BCDA                 //ABCD左旋兩個字元得到CDAB    解題思路:

                  1> 先理思路,交換字串中的字元需要(迴圈和交換函式);

                  2> 根據你交換字元的個數依次迴圈幾次,再迴圈裡實現字元的交換;

                  3> 傳遞交換引數時,需要取地址,在交換函式中解引用獲取地址裡的值;

                  4> 列印交換後的結果。

原始碼:  

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

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

//交換字串陣列中的兩個字元
void Swap(char* x, char* y)
{
	char tmp = *x;
	*x = *y;
	*y = tmp; 
}
void LeftMove(char arr[])
{
	int num = 0;
	int len = strlen(arr);
	printf("請輸入你想要左旋的個數:");
	scanf("%d", &num);
	//減少左旋次數
	num = num % 4;
	for (int i = 0; i < num; i++)
	{
		for (int j = 0; j < len - 1; j++)
		{
			//交換字串的首字元和第二個字元,並依次往下交換
			Swap(&arr[j], &arr[j + 1]);
		}
	}
	printf("%s\n", arr);
}
int main()
{
	char arr[] = { "ABCD" };
	LeftMove(arr);
	system("pause");
	return 0;
}

執行結果: