【C语言】有N个整数,使前面各数向后移m各位置,最后m个数成为最前面m个数。

2023-11-09

 题目要如下图:

 和以往的位置题交换一样,只不过这次是连续多次交换位置,我们使用指针将会更容易一些。

#include<stdio.h>
void move(int a[],int n,int m) {
	int *p,end;
	end = *(a+n-1);
	for(p=a+n-1; p>a; p--)
		*p=*(p-1);
	*a=end;
	m--;
	if(m>0)
		move(a,n,m);	//递归
}
int main() {
	int n,i,m;
	printf("你要输入多少个数?");
	scanf("%d",&n);
	int a[n];
	printf("输入%d个数:\n",n);
	for(i=0; i<n; i++)
		scanf("%d",&a[i]);
	printf("你想将最后多少个数前移?");
	scanf("%d",&m);
	move(a,n,m);
	printf("排好了:\n");
	for(i=0; i<n; i++)
		printf("%d,",a[i]);
	return 0;
}

其中的p_head指向整个数组头部,p_end则指向要前移的那段数的头部,每次交换对应位置上的两个数,然后移动俩指针,继续交换,直到完成

 程序运行测试:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【C语言】有N个整数,使前面各数向后移m各位置,最后m个数成为最前面m个数。 的相关文章

随机推荐