我想问你是否知道如何在数组中移动字符串位置。我想实现这样的东西。
如果 a=1
1 2 0 0 0 0
如果 a=2
0 0 1 2 0 0
如果 a=3
0 0 0 0 1 2
直到现在我还没有代码,我只是想要一些想法。
#include <stdio.h>
#include <string.h>
/*
void rotate_right(char *str, size_t n){
size_t len = strlen(str);
char temp[n %= len];
memcpy(temp, str + len - n, n);
memmove(str + n, str, len - n);
memcpy(str, temp, n);
}
*/
void rotate_right1(char *str){
size_t len = strlen(str);
char temp = str[len-1];
memmove(str + 1, str, len - 1);
str[0] = temp;
}
void rotate_right(char *str, size_t n){
while(n--)
rotate_right1(str);
}
int main(void){
char data[] = "120000";
char wk[sizeof(data)];
int a;
for(a=1;a<=3;++a){
strcpy(wk, data);
rotate_right(wk, 2*(a-1));
printf("%s\n", wk);
}
return 0;
}
我加入了这个问题——这是轮班还是轮换?如果换档,您应该从末尾运行数组到开头复制与当前位置相差 a 的单元格。就像是:
for (i=N;i>=a;i--)
{
array[i]=array[i-a];
}
如果它是圆形的,您应该找到一种方法来更新所需的位置,例如如果 ia 小于 0 然后 Na 或类似的东西。