[说明]
设计一程序,输入16个整数到一个数组中,将数组位序颠倒重新排序,使每个数字不再按原j的顺序排列,而是按j的二进制数颠倒后得出的数排列,例如,将第1个(0001)数与第8个(1000)数交换,将第3个数(0011)与第12个数(1100)交换。
[C++程序]
#include<iostream.h>
#define SIZE 16
#define SWAP (a,b) temper=(a); (a)= (b); (b) =temper;
void maln()
int data[SIZE];
int n:
cout<<"请输入"<<SIZE<<"个整数:";
for (n=0;n<SIZE;n++)
(1) ;
int j=0,m;
for (int i=0; i<n; i++)
if(j>i)
(2) ;
(3) ;
while( (4) ) &&j>=m)
j-=m;
m>>=1:
(5) ;
cout<<endl<<"排序后:";
for(n=0;n<SIZE;n++)
cout<<data [n]; <<" ";