轮换

来源:互联网 发布:小学生手游数据 编辑:程序博客网 时间:2024/05/31 19:53

串“abcd”每个字符都向右移位,最右的移动到第一个字符的位置,就变为“dabc”。这称为对串进行位移=1的轮换。同理,“abcd”变为:“cdab”则称为位移=2的轮换。


参考代码:

#include <stdio.h>#include <stdlib.h>#include<string.h> void shift(char* s, int n){char* p;char* q;int len = strlen(s);if(len==0) return;if(n<=0 || n==len) return;char* s2 = (char*)malloc((len+1)*sizeof(char));p = s;q = s2 + n % len;while(*p){*q++ = *p++;if(q-s2>=len){*q = '\0';q = s2;}}strcpy(s,s2);free(s2);}int main(){char *s=(char*)malloc(10*sizeof(char));    gets(s);      shift(s,5);      puts(s);     return 0;  }


0 0
原创粉丝点击