天天看點

實作一個函數,可以左旋字元串中的k個字元

實作一個函數,可以左旋字元串中的k個字元。

例: ABCD左旋一個字元得到BCDA

   ABCD左旋兩個字元得到CDAB

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

char* ZuoXuan(char *p, int n)
{
	char *p1 = p;//建立一個新的指針變量
	int len = strlen(p1) - 1;
	int i = 0;
	int j = 0;
	for (i = 0; i < n; ++i)
	{
		char tmp = p1[0];//建立一個臨時變量并把第一個字元指派到tmp中
		for (j = 0; j < len; ++j)
		{
			p1[j] = p1[j + 1];//字元依次前進一個位置
		}
		p1[len] = tmp;//将臨時變量指派到最後一個位置
	}
	return p1;
}

int main()
{
	//1.實作一個函數,可以左旋字元串中的k個字元。 
	//ABCD左旋一個字元得到BCDA
	//ABCD左旋兩個字元得到CDAB
	int k = 0;
	char a[] = "ABCD";
	printf("字元為%s\n", a);
	printf("請輸入左旋幾個字元?(輸入的數字小于4)\n");
	scanf("%d", &k);
	printf("\n");

	ZuoXuan(a, k);
	printf("%s\n", a);
	
	system("pause");
	return 0;
}
           

需要特别注意的是:在給函數傳參的過程中,函數的類型是:

char* ZuoXuan(char *p, int n)

繼續閱讀