将一维数组中的元素向右循环移动N次?
程序如下: #include <stdio.h>#include <stdlib.h> main() { int *a,n,N,i,j,tmp; printf("输入数组元素个数:"); scanf("%d",&n); a=(int*)malloc(sizeof(int)*n); printf("输入数组元素:"); for(i=0;i<n;i++) { scanf("%d",&a[i]); } printf("输入循环移动的位数:"); scanf("%d",&N); printf("移位前数组:"); for(i=0;i<n;i++) { printf("%d ",a[i]); } printf("\n"); for(i=0,j=n-1;i<j;i++,j--) { tmp=a[i]; a[i]=a[j]; a[j]=tmp; } for(i=0,j=N-1;i<j;i++,j--) { tmp=a[i]; a[i]=a[j]; a[j]=tmp; } for(i=N,j=n-1;i<j;i++,j--) { tmp=a[i]; a[i]=a[j]; a[j]=tmp; } printf("移位后数组:"); for(i=0;i<n;i++) { printf("%d ",a[i]); } printf("\n"); free(a);} 运行截图:
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有