数组中数字右移
输入移动位数后,函数不移动。我想可能是调用函数的地方错了吧![code
]#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
void rotateArray(int *a, int m,int n);
int main()
{
int array[SIZE],i,k;
int *a=array;
for(i=0;i<SIZE;i++)
{
scanf("%d",&array[i]);
}
printf("Before shifed,the array's elements are :\n");
for(i=0;i<SIZE;i++)
{
printf("%d ",array[i]);
}
printf("please input a number:\n");
scanf("%d",&k);
rotateArray(array,SIZE,k); //调用右移函数
printf("After shifed,the array's elements are :\n");
for(i=0;i<SIZE;i++)
{
printf("%d ",array[i]);
}
printf("\n");
return 0;
}
void rotateArray(int *a,int n,int k)
{
int p,q,pre_temp,m,temp;
p=0;
m=0;
q=p;
pre_temp=*a;
while(m<n) //每次移动只有一个数据到位,这里用m记下有多少个数据已到位
{
do
{
q=(q+k)%n;
temp=pre_temp;
pre_temp=*a;
*a=temp;
m++;
}while(p!=q);
if(m<n)
{
++p;
q=p;
pre_temp=*a;
}
}
}[/code]