编写函数void rotateArray(int *a,int m. int n),其功能是将包含m个元索的整型数组a中的元素顺序移动.使其前面各数顺序向后移n个位置,最后n个数变成最前面的n个数。例如,原数组中的数据为1,2,3,4.5,6.7,8,9,0,顺序移动3个位置的结果是8,9,0,1,2,3,4,5,6,7。
#include<stdio.h>
int a[200];
void rotateArray(int *a,int n,int m){
m%=n; //这句是防止m大于n 结果会不正确的情况
for(int i=m;i<n;++i)scanf("%d",&a[i]);
for(int i=0;i<m;++i)scanf("%d",&a[i]);
}
int main(){
int n,m;
scanf("%d%d",&n,&m);
rotateArray(a,n,m);
printf("%d",a[0]);
for(int i=1;i<n;++i)printf(",%d",a[i]);
return 0;
}
#include <stdio.h>
void rotateArray(int *a,int m, int n)
{int i,j,t;
for(i=0;i<n;i++)
{t=a[m-1];
for(j=m-1;j>0;j--)
a[j]=a[j-1];
a[0]=t;
}
}
int main()
{ int i,m,n,a[100];
scanf("%d%d",&m,&n);
for(i=0;i<m;i++)
scanf("%d",&a[i]);
rotateArray(a, m,n);
for(i=0; i<10; i++)
printf("%d ",a[i]);
printf("\n");
}
本回答被提问者采纳#include<stdio.h>
void f(int *a,int n) { int i,k; k=a[n-1]; for ( i=0;i<n-1;i++ ) a[n-i-1]=a[n-i-2]; a[0]=k; }
void rotateArray(int *a,int m,int n) { int i; for ( i=0;i<n;i++ ) f(a,m); }
#define N 10
void main() { int a[N],i,n;
for ( i=0;i<N;i++ ) scanf("%d",&a[i]);
scanf("%d",&n);
rotateArray(a,N,n);
for ( i=0;i<N;i++ ) printf("%d ",a[i]); printf("\n");
}
void rotateArray(int *a,int m, int n) {
int i,t,j;
for(j=0; j<n; j++) {
t=a[0];
for(i=m-1; i>0; i--)
if(i==m-1) a[0]=a[m-1];
else a[i+1]=a[i];
a[1]=t;
}
}
int main() {
int a[10]= {1,2,3,4,5,6,7,8,9,0},i;
rotateArray(a,10,3);
for(i=0; i<10; i++) printf("%-4d",a[i]);
}