.编写函数实现:一维数组作为函数的参数,并根据形参n把该一维数组的数组元素进行如下操作:假设定义有int a[5] = {10,20,30,40,50} ,形参n为2;则把a[2]及后面的元素移动到a[0]的位置,把之前a[2]前面的元素依次移动到后面,即移动后的效果如下:{30,40,50,10,20}。主函数中实现:把改变后的数组顺序输出。函数的定义可参考:void move(int arr[],int len,int n){}。
方法很多,最直接的方法是,在函数中定义一个临时数组,然后2次循环,先将n往后的值存入新数组,再将n之前的值存入数组。最后把临时数组的值全部赋值给原数组。
#include<stdio.h>
void move(int arr[],int len,int n);
int main()
{
int i,arr[5]={10,20,30,40,50},n;
printf("请输入n的值:"),scanf("%d",&n);
move(arr,5,n);
printf("数组{10,20,30,40,50}变为:");
for(i=0;i<5;i++)
printf("%d ",arr[i]);
return 0;
}
void move(int arr[],int len,int n)
{
int i,j,atemp[len];
if(n>=len)
printf("n值过大,数组访问越界!\n");
else
{
for(i=n,j=0;i<len;i++,j++)
atemp[j]=arr[i];
for(i=0;i<n;i++,j++)
atemp[j]=arr[i];
}
for(i=0;i<len;i++)
arr[i]=atemp[i];
}