C語言實現一個函式,可以左旋字串中的k個字元
阿新 • • 發佈:2018-12-19
// 實現一個函式,可以左旋字串中的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; }
執行結果: