//1.第一个(两个其实差不多,只不过我比较喜欢用后者)
#include <stdio.h> void move(int *a,int n)//指针a接收数组首元素的地址 { int i,j,X; int *p=a;//指针p也指向a数组 for(i=0;i<3;i++) { X=*a;//*a代表数组的第一个元素 for(j=1;j<n;j++) { *(p+j-1)=*(p+j); } *(p+j-1)=X; } } int main (void) { int a[8]={3,2,5,8,4,7,6,9}; int i; move(a,8); for(i=0;i<8;i++) printf("%5d",a[i]); printf("\n"); return 0; }
//第二个
#include <stdio.h> void move(int *a,int n)//指针a接收数组首元素的地址 { int i,j,X; for(i=0;i<3;i++) { X=a[0]; for(j=1;j<n;j++) { a[j-1]=a[j]; } a[j-1]=X; } } int main (void) { int a[8]={3,2,5,8,4,7,6,9}; int i; move(a,8); for(i=0;i<8;i++) printf("%5d",a[i]); printf("\n"); return 0; }