1008. 数组元素循环右移问题 (20): 宏定义 new 相关知识巩固
1 #include<iostream> 2 using namespace std; 3 #define swap(a,b) {a^= b; b^=a; a^=b;}// 原来还可以这样定义宏 4 5 void RightShift( int *Array, int N, int M ) 6 { 7 int i, j; 8 if(M>0 && M!=N) //M==0 || M==N 时不用循环右移 9 { 10 for( i=0, j=N-1; i<j; i++, j-- ) 11 swap(Array[i],Array[j]); 12 13 for( i=0, j=M-1; i<j; i++, j-- ) 14 swap(Array[i],Array[j]); 15 16 for( i=M, j=N-1; i<j; i++, j-- ) 17 swap(Array[i],Array[j]); 18 } 19 } 20 21 int main() 22 { 23 int N, M; 24 while( cin>>N>>M ) 25 { 26 //if( N>100||N<1||M<0 ) continue; 27 M%=N; 28 int *a; 29 a = new int[N]; //不要忘了 数组空间 30 for( int i=0; i<N; i++ ) 31 cin>>a[i]; 32 RightShift( a, N, M ); 33 for( int i=0; i<N-1; i++) 34 cout<<a[i]<<‘ ‘; 35 cout<<a[N-1]<<endl;; 36 } 37 return 0; 38 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。