题目如图。
#include<stdio.h> int main() { int i,j=0; int n,m; int a[100]; scanf("%d %d",&n,&m); if(m>n) m=m-n; for(i=0;i<n;i++) { scanf("%d",&a[i]); } for(i=0;i<n;i++) { a[i+m+n]=a[i]; } for(i=n+n;i<2*n+m;i++) { a[j]=a[i]; j++; } for(i=m+n;i<2*n;i++) { a[j]=a[i]; j++; } for(i=0;i<n;i++) { if(i!=n-1) printf("%d ",a[i]); else printf("%d\n",a[i]); } return 0; }
这里有一个坑,输入第一行,第一个数字不一定比第二个数字大,我的做法是将这串字符集体移动,使a[i+m+n]=a[i];然后把最后几个n移到最前面,再将a[m+n]后面的移到到前面,这个做法要仔细,不然一下就会错误;
本文介绍了一种通过数组旋转来解决特定问题的编程方法。该方法首先判断输入参数的大小关系,随后通过元素的移动实现数组的循环排列,并确保了最终输出的正确性和顺序性。
814

被折叠的 条评论
为什么被折叠?



