131-数値配列を右に循環します

数値配列:1234567
右サイクル3桁
出力:5671234

#include<stdio.h>
void Reverse(int* arr, int a, int b)//逆序 
{
    
    
	for(; a< b; a++, b--)
	{
    
    
		int tmp = arr[b];
		arr[b] = arr[a];
		arr[a] = tmp;
	}
}

void RightLoop(int* arr, int n, int k)
{
    
    
	k %= n;//如果k大于n,可以减少次数
	Reverse(arr, 0, n - k - 1);//前半部分逆置
	Reverse(arr, n- k, n - 1);//后半部分逆置
	Reverse(arr, 0, n - 1);//全部逆置
}

int main()
{
    
    
	int arr[]={
    
    1,2,3,4,5,6,7};
	RightLoop(arr,sizeof(arr)/sizeof(arr[0]),3);
	for(int i=0;i<sizeof(arr)/sizeof(arr[0]);++i)
	{
    
    
		printf("%d",arr[i]);
	}
	return 0;
}

結果は以下のとおりです。
ここに画像の説明を挿入

質問のアイデア

1234567右サイクル3桁、
最初に1234を4321567に
反転し次に567を4321765
反転し、最後に4321765反転して取得:5671234

おすすめ

転載: blog.csdn.net/LINZEYU666/article/details/112324362