#define BITS 4 /** 定义的多少位数?*/
#define JIN 10 /**用于分解数据值的进制值。*/
/***
* 从标准输入得到输入数值
*/
int getBitsNum(){
int num = 0;
int bound_bottom = pow(JIN,BITS-1) - 1;
int bound_top = pow(JIN,BITS);
printf("请输入一个四位数 n ( %5d < n < %5d) : ",bound_bottom,bound_top);
scanf("%d",&num);
if(numbound_top)return 0;
else return num;
}
/** 打印数字数组用于测试观察!*/
void printBitArray(int *bitArray){
int i = 0;
for(i = 0; i < BITS; i++){
printf("%3d",*(bitArray+i));
}
putchar('\n');
}
/***
* 将数值按相应进制分解并将相应数字值保存到bitArray数组当中。
*/
void toBitArray(int num,int *bitArray){
//int bitArray[BITS] = {0};
int oringnal = num;
int remainder = num;
int order_m = 1;//数量级 order of magnitude
int index = 0;
while(oringnal > order_m){
bitArray[index++] = remainder % JIN;
remainder = remainder/JIN;
order_m *=JIN;
}
}
/***
*
*/
int combNew(int *bitArray){
int i = 0;
int order_m = 1;
int sum = 0;
int temp = 0;
temp = bitArray[3];
bitArray[3] = bitArray[2];
bitArray[2] = temp;
for(i = 0; i < BITS; i++){
sum += (*(bitArray+i))*order_m;
order_m *=JIN;
}
return sum;
}
int main(int argc,char **argv){
int num = 0;
int bitArray[BITS] = {0};
int sum_new = 0;
while((num = getBitsNum())== 0){;}
toBitArray(num,bitArray);
//printBitArray(bitArray);
sum_new = combNew(bitArray);
printf("%5d这个数,可以重组成:%5d\n",num,sum_new);
return EXIT_SUCCESS;
}
/***
* 运行结果:
请输入一个四位数 n ( 999 < n < 10000) : 1234
1234这个数,可以重组成: 2134
*/