满意答案
qing劫JIE
2013.03.17
采纳率:58% 等级:12
已帮助:6747人
#include
void move(int array[],int k,int length ){//k表示移动第k位置,length表示长度
int i,j, temp ;
if (k<0){
printf("输入的移动位数有错误,应当为整数");
return ;
}
//对于循环右移来说,真正变换的位置的一定是k对length的余数。(它的商就是还原了几次)
//因此我们外层循环如下为例:
//1 2 3 4 5 6 7 ,假设右移3位
//第一次移动结果:
// 1 2 3 4 5 6 7
//再把7放到1的位置就可以了
//所以内存循环就做一趟调整
//我们用temp来保存移出的最后一位,在一趟调整之后把移出的这一位放到第一位
for(i=0;i
temp = array[length-1];//保留最后一位
for(j=length-1;j>0;j--){//数组的最后一位的下标是长度-1
array[j] = array[j-1] ;
}
array[0]= temp ;//放回首位
}
}
int main(void){
int arr[]={1,2,3,4,5,6,7} ;
int i=0 ;
move(arr,3,7);
for(;i<7;i++){
printf("%d\t",arr[i]) ;
}
return 0 ;
}
02分享举报