轮换 2011 蓝桥杯

来源:互联网 发布:js设置radio不可用 编辑:程序博客网 时间:2024/05/15 11:53

轮换

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

下面的代码实现了对串s进行位移为n的轮换。请补全缺失的代码。

#include <stdio.h>#include <string.h>#include <stdlib.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(sizeof(char) * len);  //填空处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 ch[] = "abcdefg";shift(ch,2);printf("%s\n",ch);return 0;}


0 0
原创粉丝点击