(C语言)将数组循环右移(左移)x个单位

将数组循环右移x个单位。
例如将{1,2,3,4,5,6,7}右移3个单位变成{5,6,7,1,2,3,4}

#include <stdio.h>
int main()
{
	int n, x, i, j, a[100], b[100];
	puts("输入数组元素个数");
	scanf("%d", &n);
	puts("输入数组元素");
	for (i = 0; i < n; i++)
		scanf("%d", &a[i]);
	puts("输入向右移动次数");
	scanf("%d", &x);
	for (i = 0, j = n - x; i < x; i++,j++)  
		b[i] = a[j];	//将a[]后x个元素存放到b[]前x个单位
	for (i = x, j = 0; i < n; i++, j++)
		b[i] = a[j];	//将a[]之前剩余的元素存放到b[x]之后的单位
	puts("移动后的数组为");
	for (i = 0; i < n; i++)
		printf("%d ", b[i]);
	return 0;
}

将数组循环左移x个单位。
例如将{1,2,3,4,5,6,7}左移3个单位变成{4,5,6,7,1,2,3}

#include <stdio.h>
int main()
{
	int n, x, i, j, a[100];
	puts("输入数组元素个数");
	scanf("%d", &n);
	puts("输入数组元素");
	for (i = 0; i < n; i++)
		scanf("%d", &a[i]);
	puts("输入向左移动次数");
	scanf("%d", &x);
	for (i = 0; i < x; i++) {		//循环x次
		int t = a[0];				//储存数组第一个元素
		for (j = 0; j < n-1; j++)	//将前n-1个元素向前移动一个单位
			a[j] = a[j+1];
		a[n - 1] = t;				//最后一个元素为之前储存的第一个元素
	}
	puts("移动后的数组为");
	for (i = 0; i < n; i++)
		printf("%d ", a[i]);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Dax1_/article/details/105499679