编写程序,将一个整型数组的元素循环右移,最后一个元素存到开头

请用指针编写 谢谢

#include "stdio.h"

/* 将数组arr循环右移size位 */
void CMR(int *p, int len, int size)
{
int i, j;
int temp;
if(size<1 || size>=len)
return;
for(i=0,j=len-size-1; i<j; i++,j--)
{
temp = *(p+i);
*(p+i) = *(p+j);
*(p+j) = temp;
}
for(i=len-size,j=len-1; i<j; i++,j--)
{
temp = *(p+i);
*(p+i) = *(p+j);
*(p+j) = temp;
}
for(i=0; i<len/2; i++)
{
temp = *(p+i);
*(p+i) = *(p+len-1-i);
*(p+len-1-i); = temp;
}
}

void main()
{
int i;
int arr[] = {1,2,3,4,5};
int len = 5;
int size = 1;

printf("before move : ");
for(i=0; i<len; i++)
printf("%d ", arr[i]);
printf("\n");

CMR(arr, len, size);

printf("after moved : ");
for(i=0; i<len; i++)
printf("%d ", arr[i]);
printf("\n");

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-04
#include<stdio.h>
#include<string.h>
int main()
{
char array[100],temp;
int i;
scanf ("%s",array);
temp = array[strlen(array)-1]; //将最后一个保存在中间变量中
for ( i = strlen(array)-1; i >= 1; i--)
array[i] = array[i-1]; //右移
array[0] = temp; //第一个保存最后一个
printf ("%s\n",array);
return 0;
}
//希望可以帮助到你
第2个回答  2011-06-04
void cycle(int *p,int L) //L为数组的大小
{
int a;
a=p[L-1];//将最后一个元素保存在变量a中
for(int i=L-1;i>0;i--)//循环右移
p[i]=p[i-1];
p[0]=a;//将最后一个元素保存在数组开关
}