//循环后移
#include <stdio.h>
#include <stdlib.h>
void shift(int *sequence, int number, int movement);
int main(void)
{
int n; // 整数个数
int m; // 向后移 m个位置
int i;
int *seq;
printf("请输入整数个数n:");
scanf("%d",&n);
while(n<=0)
{
printf("请重新输入整数个数 (n>0):");
scanf("%d", &n);
}
if((seq = (int *)calloc(n, sizeof(int))) == NULL)
{
printf("Not able to allocate memory for seq. \n");
exit(1);
}
printf("请输入%d个整数: ", n);
for (i=0; i<n; i++)
{
scanf("%d", seq+i);
}
printf("你输入的序列为: ");
for (i=0; i<n; i++)
{
printf("%d ", seq[i]);
}
printf("\n");
printf("请输入后移位置数:");
scanf("%d",&m);
while(m<0)
{
printf("请重新输入后移位置数 (m>=0):");
scanf("%d", &m);
}
shift(seq, n, m);
printf("循环后移%d个位置后,序列为: ", m);
for(i=0; i<n; i++)
{
printf("%d ", seq[i]);
}
printf("\n");
free(seq);
return 0;
}
void shift(int *sequence, int number, int movement)
{
int i;
int temp[100];
movement = movement%number;
if(movement == 0)
;
else
{
// if((temp = (* int)calloc(movement, sizeof(int))) == NULL)
// {
// printf("Not able to allocate memory for temp. \n");
// exit(1);
// }
for(i=0; i<movement; i++)
{
temp[i] = sequence[number-movement+i];
}
for(i=1; i<=number-movement; i++)
{
sequence[number-i] = sequence[number-movement-i];
}
for(i=0;i<movement;i++)
{
sequence[i] = temp[i];
}
// free(temp);
}
}
8-3 循环后移
猜你喜欢
转载自blog.csdn.net/kirisame9/article/details/79858704
今日推荐
周排行