★实现一个函数,可以左旋字符串中的k个字符。
例:AABCD左旋一个字符得到ABCDA。
AABCD左旋两个字符得到BCDAA。
#include<stdio.h> #include<stdlib.h> void spin(char arr[],int num) //spin函数用以完成旋转字符的功能 { char arr1[5] = {0}; char *str = arr; //创建两个指针都指向原字符数组的首地址 char *start = arr; char *mov = arr1; //同理创建两个指向接受旋转字符的数组的首地址 char *head = arr1; while (num--) //num为输入的旋转字符数,用以结束while循环 { *mov++ = *start++;//从首地址依次将字符拷贝到接受字符数组当中,拷贝次数为输入的旋转字符数 } while (*start) //将拷贝完成最后一次字符后的字符串依次向前与空白替换,直到遇到原字符串的‘\0’时结束循环 { *str++ = *start++; } while (*str) //将存放旋转字符数组中的字符依次填充到向前与空格替换后剩余字符串的末尾处 { *str++ = *head++; } *str = '\0'; //填充时指针遇到‘\0’时结束 } int main() { int num = 0; char arr[] = "AABCD"; printf("原字符串:%s\n",arr); printf("请输入旋转的字符数:"); scanf("%d",&num); while (num<1 || num>5) //对于输入旋转字符数的临界值的判断 { if (num == 5) //旋转字符数为5时,旋转后的字符串与旋转前的字符串一致,所以可直接输出 { printf("%s\n", arr); return 0; } else { printf("输入有误,重新输入!"); scanf("%d", &num); } } spin(arr,num); printf("现字符串:%s\n",arr); system("pause"); return 0; }