首页 > 代码库 > c - 逆序/正序输出每位.

c - 逆序/正序输出每位.

 1 #include <stdio.h> 2 #include <math.h> 3  4 /* 5 判断一个正整数的位数,并按正序,逆序输出他们的位. 6 */ 7  8 int  9 invert(int);10 11 void12 order(int, int);13 14 int 15 main(void) {16     int n = 56789;17     printf("original:%d\n", n);18     int bitCont = invert(n);19     printf("\nbits: %d\n", bitCont);20     order(n, bitCont);21     return 0;22 }23 24 //逆序输出每一位并记录位数.25 int 26 invert(int n) {27     int bitCount = 0;    //记录位数.28     do 29     {30         ++bitCount;31         printf("%d ", n % 10);    //逆序输出每一位.32         n /= 10;33     } while (n);    //终止条件是"n为0".34     return bitCount;35 }36 37 //正序输出每一位.38 void39 order(int n, int bitCount) {40     int tmp = 0;    //存储即将减去的级别,如当n为"1234"时,存储"1000";当n为"234"时,存储"100".41     int h = 0;    //存储最高位的位.42     while(n) {43         tmp = (int)pow((double)10, --bitCount);44         h = n / tmp;45         printf("%d ", h);46         n -= h * tmp;47     }48 }

 

output:

original:567899 8 7 6 5bits: 55 6 7 8 9 请按任意键继续. . .

 

c - 逆序/正序输出每位.