C语言指针编程题,求助大神解答

编写函数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;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-18

#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");

}

本回答被提问者采纳
第2个回答  2020-05-19

#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");

}

第3个回答  2020-05-18
#include <stdio.h>
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]);
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网